آموزش آپلود عکس در جنگو

June 2020

در این ویدیو با نحوه آپلود عکس در جنگو آشنا میشوید. برای اینکار نیازه که چند تا کار انجام بدیم. اول باید مدلمون رو ایجاد کنیم. برای ذخیره عکس‌های آپلود شده باید از فیلد ImageField استفاده کنید. مدلی که استفاده میکنیم به شکل زیر خواهد بود:

class First(models.Model):
	name = models.CharField(max_length=100)
	image = models.ImageField(upload_to='home/%Y/%m/%d/')

نکته‌ای که باید از کد بالا بدونید این هست که در فیلد ImageField مقدار upload_to مشخص کننده مکانی هست که قراره عکس ذخیره بشه. این مسیر در انتهای MEDIA_ROOT قرار میگیره. پس در فایل settings.py مقادیر زیر رو مینویسیم:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

 

بعد از این موارد باید یک فرم ایجاد کنیم و به کاربر نشون بدیم:

from django import forms


class ImageForm(forms.Form):
	name = forms.CharField()
	image = forms.ImageField()

 

در مرحله بعد باید در فایل views.py این فرم رو کنترل کنیم:

from django.shortcuts import render, redirect
from .forms import ImageForm
from .models import First


def home(request):
	infos = First.objects.all()
	if request.method == 'POST':
		form = ImageForm(request.POST, request.FILES)
		if form.is_valid():
			First(name=form.cleaned_data['name'], image=request.FILES['image']).save()
			return redirect('home:home')
	else:
		form = ImageForm()
	return render(request, 'home/home.html', {'form':form, 'infos':infos})

اطلاعاتی که کاربر به عنوان فایل در یک فرم ذخیره میکنه در request.FILES ذخیره میشه.

ارسال نظر

اگر قراره سوالی بپرسید که داخلش کد هست، بهتره از کدتون عکس بگیرید و به ایمیلی که پایین نوشتم بفرستید

فرهاد

June 2020

سلام
media_url در واقع url ای مجازی برای فایل های موجود در مسیر media_root را تنظیم می کند. وقتی شما media_url را بصورت amir وارد کردید مثل این هست که url ای که بصورت media/ بود را به amir/ تغییر نام میدهید بطوری که به فولدر فیزیکی media/ لینک خواهد شد.

پاسخ به نظر


امیرحسین بیگدلو

June 2020

سلام
میدونم این موضوع رو اما حقیقتا انتظار نداشتم کار کنه