πΌ ΠΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΉΡ django - ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠΎΠ²Π΅ΡΡ ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ πΈ
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΉΡ Django
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ°ΠΉΡ Django - ΡΡΠΎ Π²Π°ΠΆΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ°, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΉΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Django.
Π¨Π°Π³ 1: ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ImageField
. ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Π΅ image
, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠ΅Π΅ Π·Π° Ρ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
from django.db import models
class MyModel(models.Model):
image = models.ImageField(upload_to='images/')
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ upload_to='images/'
Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ image
. ΠΠ½ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ΅ images/
Π²Π½ΡΡΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, Π³Π΄Π΅ Ρ
ΡΠ°Π½ΡΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Django. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΈΠΌΡ ΠΏΠ°ΠΏΠΊΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Π°ΠΌ Π½ΡΠ°Π²ΠΈΡΡΡ.
Π¨Π°Π³ 2: ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΎΡΠΌΡ
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ°ΠΉΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΠΌΡ Django.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Π΅ image
.
from django import forms
class MyForm(forms.Form):
image = forms.ImageField()
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΠΎΠ»Π΅ ImageField
ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ forms
Django Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ image
Π² ΡΠΎΡΠΌΠ΅. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΅Π³ΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ.
Π¨Π°Π³ 3: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈ ΡΠΎΡΠΌΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Django, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π΅Π³ΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅.
from django.shortcuts import render, redirect
from .forms import MyForm
def upload_image(request):
if request.method == 'POST':
form = MyForm(request.POST, request.FILES)
if form.is_valid():
image = form.cleaned_data['image']
my_model = MyModel.objects.create(image=image)
return redirect('image_detail', pk=my_model.pk)
else:
form = MyForm()
return render(request, 'upload_image.html', {'form': form})
def image_detail(request, pk):
my_model = MyModel.objects.get(pk=pk)
return render(request, 'image_detail.html', {'my_model': my_model})
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π€ΡΠ½ΠΊΡΠΈΡ upload_image
ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ POST-Π·Π°ΠΏΡΠΎΡΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ image_detail
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅.
Π¨Π°Π³ 4: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ²
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡ Ρ ΡΠΎΡΠΌΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΠ°Π½ΠΈΡΡ Ρ Π΄Π΅ΡΠ°Π»ΡΠΌΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π±Π»ΠΎΠ½Π° Π΄Π»Ρ ΡΠΎΡΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">ΠΠ°Π³ΡΡΠ·ΠΈΡΡ</button>
</form>
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠΎΡΠΌΡ {{ form.as_p }}
Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ ΡΠΎΡΠΌΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ submit
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠ³ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΎΡΠΌΡ.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π±Π»ΠΎΠ½Π° Π΄Π»Ρ ΡΡΡΠ°Π½ΠΈΡΡ Ρ Π΄Π΅ΡΠ°Π»ΡΠΌΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
<img src="{{ my_model.image.url }}">
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ {{ my_model.image.url }}
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ URL-Π°Π΄ΡΠ΅Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΉΡ Django Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΠΎΡΠΌΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ². ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²ΡΠ΅ ΡΠ°Π³ΠΈ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎΠ±Ρ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.
Π£Π΄Π°ΡΠΈ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅!