इस पायथन ट्यूटोरियल के साथ एक सरल, लेकिन प्रभावी, छवि अपलोडर बनाएं।
आधुनिक एप्लिकेशन की सबसे आकर्षक विशेषताओं में से एक इसकी छवियों को समायोजित करने की क्षमता है। चित्र, चित्र और एनिमेशन जैसी छवियां किसी एप्लिकेशन में दृश्य अपील लाती हैं।
हालाँकि छवियाँ महत्वपूर्ण हैं, वे ऐप को धीमा कर सकती हैं और डेटाबेस के लिए सुरक्षा खतरों को बढ़ा सकती हैं।
Django पर निर्मित एप्लिकेशन के लिए, चित्र अपलोड करना आसान और सुरक्षित है। Django में एक विशेष सुविधा है जो छवि अपलोड करने की सुविधा प्रदान करती है।
आइए जानें कि सुरक्षा से समझौता किए बिना Django ऐप पर छवियां कैसे अपलोड करें।
जिसकी आपको जरूरत है
इससे पहले कि आप छवियां अपलोड करना शुरू करें, सुनिश्चित करें कि आपके पास निम्नलिखित आवश्यकताएं हैं:
- पायथन स्थापित करें
- पिप स्थापित करें
- स्थापित करना पिपेनव (आप चाहें तो वेनव का भी उपयोग कर सकते हैं)
- Django स्थापित करें
- आपके पास एक मौजूदा Django ऐप है जिसके लिए छवियों की आवश्यकता है
अब जब आपके पास आवश्यक निर्भरताएँ हैं तो आइए शुरू करें।
1. तकिया स्थापित करें
Django के पास एक है छवि फ़ील्ड इसके मॉडलों में. फ़ील्ड छवि अपलोड को फ़ाइल सिस्टम में एक निर्दिष्ट स्थान पर संग्रहीत करता है, डेटाबेस में नहीं।
तकिया एक पायथन लाइब्रेरी है जो इमेजफिल्ड में छवियों की जांच करती है।स्थापित करने के लिए तकिया नीचे दिए गए आदेश का उपयोग करें:
pipenv install pillow
यदि आप वेनव का उपयोग कर रहे हैं, तो इसके बजाय इस कमांड का उपयोग करें
pip install pillow
2. मॉडल बनाएं
एक बनाएं छवि फ़ील्ड डेटाबेस में संदर्भ. फिर, जोड़ें अपलोड करने के लिए मॉडल में तर्क. तर्क फ़ाइल सिस्टम में भंडारण स्थान को परिभाषित करता है।
classProfile(models.Model):
name = models.CharField(max_length=80, blank=True)
bio = models.TextField(max_length=254, blank=True)
profile_picture = models.ImageField(upload_to='photos/')
def__str__(self):
returnf'{self.user.username} profile'
अंत में विधि डेटा को स्ट्रिंग्स में बदलने में मदद करती है।
इसके बाद, माइग्रेट करें और डेटाबेस में नए बदलाव करें। फिर, आपको प्रोजेक्ट सेटिंग्स को संपादित करने की आवश्यकता है।
प्रोजेक्ट सेटिंग पर नेविगेट करें. शीर्षक के अंतर्गत # स्थिर फ़ाइलें (सीएसएस, जावास्क्रिप्ट, छवियाँ), मीडिया यूआरएल जोड़ें।
# https://docs.djangoproject.com/en/4.0/howto/static-files/
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
# STATICFILES_STORAGE =
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
सेटिंग्स में मीडिया यूआरएल जोड़ने से अपलोड की गई छवियों को प्रदर्शित करने के लिए एक विशिष्ट मार्ग परिभाषित होता है। मीडिया फ़ाइल ऐप छवियों को संग्रहीत करती है। रास्ता इस तरह दिखेगा: 127.0.0.1:8000/मीडिया/प्रोफाइल/इमेज.जेपीजी
अद्यतन करें खाके प्रोजेक्ट सेटिंग्स में सरणी। जोड़ना django.template.context_processors.media टेम्पलेट्स सरणी के लिए.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.media'
],
},
},
]
प्रोसेसर की मीडिया सेटिंग अपलोड की गई छवियों को ऐप टेम्प्लेट में लोड करने में मदद करती है।
इसके बाद, आपको जोड़ना होगा मीडिया_रूट ऐप यूआरएल का मार्ग। यह अपलोड की गई छवियों को विकास सर्वर पर लोड करने में मदद करेगा।
सबसे पहले, प्रोजेक्ट सेटिंग्स को यहां से आयात करें django.conf मॉड्यूल और ए स्थैतिक कार्य. फिर, इसमें जोड़ें यूआरएलपैटर्न अपलोड की गई फ़ाइलों का स्थान दिखाने वाला एक स्थिर मार्ग।
from django.urls import path
from. import views
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns = [
path('', views.index, name = 'index'),
path('profile', views.profile, name='profile'),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()
5. छवि अपलोड का परीक्षण करें
अगला, सर्वर चलाएँ:
python manage.py runserver
यदि कोई त्रुटि नहीं है, तो बेस यूआरएल में एक एडमिन रूट जोड़कर Django एडमिन पैनल पर जाएँ, http://127.0.0.1:8000/admin.
एडमिन पैनल के अंदर, जब आप प्रोफ़ाइल मॉडल पर क्लिक करेंगे, तो आपको नीचे एक छवि फ़ील्ड जोड़ी हुई दिखाई देगी।
जब आप कोई छवि अपलोड करते हैं, तो आपको ऐप फ़ोल्डर में एक नया फ़ोल्डर बनाया हुआ दिखाई देगा जिसे कहा जाता है मीडिया. जब आप फ़ोल्डर खोलेंगे, तो आपको वह छवि दिखाई देगी जो आपने व्यवस्थापक पैनल के माध्यम से अपलोड की थी।
6. अपलोड की गई छवि प्रदर्शित करें
आपको प्रोफ़ाइल छवि प्रदर्शित करने के लिए प्रोफ़ाइल टेम्पलेट को अपडेट करना चाहिए।
आप एक जोड़ देंगे आईएमजी टैग करें और इसे इससे भरें प्रोफ़ाइल फोटो गुण। छवि फ़ील्ड इसमें एक यूआरएल विशेषता है जो फ़ाइल को पूर्ण यूआरएल प्रदान करती है। आप सीएसएस कक्षाओं का उपयोग करके छवि का आकार और स्वरूप निर्दिष्ट कर सकते हैं।
{% extends "base.html" %}
{% load static %}
{% block content %}
<divclass="card mb-3 bg-whitesmoke"style="max-width: fit content;">
<divclass="row g-0">
<divclass="col-md-4">
<imgsrc="{{user.profile.profile_picture.url}}"width="100px"alt="profile pic"class="mx-auto d-block rounded-circle" />
div>
div>
div>
{% endblock %}
आप छवि लोड करने के लिए सर्वर चला सकते हैं। फिर प्रदर्शित छवि देखने के लिए ब्राउज़र पर टेम्पलेट की जाँच करें।
Django ऐप में इमेज कैसे अपलोड करें
Django आपके एप्लिकेशन में छवियां अपलोड करना आसान बनाता है। Django के पास अपने मॉडलों पर एक विशेष फ़ील्ड है जो अपलोड करने से पहले फ़ाइल प्रकार को जोड़ता है और जाँचता है।
ImageField छवियों को संग्रहीत करने के लिए फ़ाइल सिस्टम को एक पूर्ण पथ प्रदान करता है। छवियों को फ़ाइल सिस्टम में संग्रहीत करने से ऐप की गति बढ़ जाती है और यह सुनिश्चित होता है कि डेटाबेस में हानिकारक फ़ाइलें नहीं घुसी हैं।