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

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

در این ویدیو با نحوه آپلود عکس در جنگو آشنا میشوید. برای اینکار نیازه که چند تا کار انجام بدیم. اول باید مدلمون رو ایجاد کنیم. برای ذخیره عکس‌های آپلود شده باید از فیلد 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 ذخیره میشه.

ویدیوهای مشابه



ارسال نظر


shayan

7 ماه قبل پاسخ به نظر

سلام، آموزش ها عالیه
راستی زمان تغییر دادن آدرس احتمالا عکس ها توی کش مرورگر ذخیره شدن که نشون میدن (17:15) این مشکل خیلی برای من پیش اومده زمان کار با static فایل ها کلا یه دستم روی کش دیلیت هست :))

ارسال نظر



علی

9 ماه قبل پاسخ به نظر

من هر نظری هم به شما بدم باز هم کم هست خیلی خوب تدریس کردید من در همین اپلود کردن عکس مشکل داشتم و یک ماه دنبالش می کردم اما پیدا نشد تا اینکه ویدیو شما رو دیدم و مشکلم حل شد واقعا خیلی ممنونتون هستم.

ارسال نظر



مجتبی

9 ماه قبل پاسخ به نظر

سلام کارم رو راه انداخت
ایشالا کارت راه بیوفته بیگدلو جان

ارسال نظر



مجيد اشرفي

1 سال قبل پاسخ به نظر

سلام مجدد
ميشه لطفا براي آپلود فيلم هم آموزش بذاريد؟

ارسال نظر



مجید اشرفی

1 سال قبل پاسخ به نظر

سلام استاد
چطور میشه کاری کرد که متن no file selected نمایش داده نشه؟

ارسال نظر



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

1 سال قبل

سلام
این مورد مربوط به html هست و حقیقتا منم هم بلد نیستم :(

rasul

1 سال قبل پاسخ به نظر

سلام
زمانی که می خواهیم دوربین کاربر رو با جاوا اسکریپت باز کنیم و یک عکس بگیریم
میتونیم اون عکس گرفته شده رو با فرم ها به viewکاربر برگردونیم
راستی من یه وقتایی توکامنت ها سوال میپرسم بعد یادم میره زیر کدوم پست کامنت گذاشتم عین سنجاب ها که بلوط شون رو یادشون میره کجا گذاشتن (:
خوب میشد اگه تو پروفایل کاربری میتونستیم سوال هایی که پرسیدیم رو ببینیم
خلاصه دمتم گررم.../:

ارسال نظر



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

1 سال قبل

سلام
بله، میتونید به ویوها ارسال کنید

ناشناس

3 سال قبل پاسخ به نظر

زیاد جالب نبود، توضیحات کامل تری توی استک اور فلو بود

ارسال نظر



mohammad parsa

1 سال قبل

من حدود یک سال هست با این استاد دارم پیش می رم و تا حالا هر چی گفته هیچ جا به خوبی این پیدا نکردم شما چطور اینو جالب ندیدید؟؟؟؟!!!!

DeV

3 سال قبل پاسخ به نظر

درود آقای بیگدلو
عرضم به خدمتتون که بجای استفاده از os
و join کردن BASE_DIR برای ساخت فایل یا دایرکتوری
مورد نظر میتونیم
با کد کمتر بجای import کردن os و استفاده ازش
چون جدیدا جنگو از pathlib استفاده میکنه برای پیدا کردن
ریشه پروژه میتونیم فقط
بجای os.path.join(BASE_DIR, 'example_file')

از 'BASE_DIR / 'example_file
استفاده کنیم...تمام...

ارسال نظر



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

3 سال قبل

سلام
:|
این چیزی که شما میگید برای نسخه جدید جنگو هست. اونموقع که من این ویدیو رو ضبط کردم داخل جنگو از همون ماژول os استفاده میشد.

محمد احمدی

3 سال قبل پاسخ به نظر

سلام و بازم ممنون.
برای آپلود ویدیو چیزی نمیذارین؟

ارسال نظر



حسین

4 سال قبل پاسخ به نظر

سلام امیر جان فقط میتونم بگم کارت خیلی درسته

ارسال نظر



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

4 سال قبل

سلام
چاکریم

شایان

4 سال قبل پاسخ به نظر

سلام
ممنون از آموزش های خوبتون میشه آپلود ویدیو رو حالا چه به صورت تک قسمتی یا به صورت دوره جداگانه داخل سایت قرار بدید؟

ارسال نظر



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

4 سال قبل

سلام
چشم، حتما

فرهاد

4 سال قبل پاسخ به نظر

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

ارسال نظر



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

4 سال قبل

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

مونگارد