نحوه ایجاد نماها (Views) برای توسعه وب Django

اگر مجموعه توسعه ما Django را دنبال کرده باشید ، با موفقیت یک برنامه Django ایجاد کرده اید که به کاربران دارای امتیازات ادمین اجازه می دهد تا از طریق داشبورد UI ادمین Django ، نظرات و پست های خود را اضافه کنند. همچنین با اهرم کردن MySQL و مدل های راه حل نگاشت مربوط به آبجکت، تداوم داده ها را تنظیم کرده اید.در این آموزش ، نماهای Django را ایجاد خواهیم کرد که برنامه وب ما را قادر می سازد به درستی درخواست های وب را انجام داده و پاسخ های وب مورد نیاز را برگرداند. همانطور که در مطالب Django تعریف شده است ، یک پاسخ وب می تواند محتوای HTML یک صفحه وب ، یک تغییر مسیر یا یک خطای HTTP باشد (به عنوان مثال 404). کد توابع view تا زمانی که در مسیر Python شما باشد از لحاظ فنی می تواند در هر نقطه از پروژه شما قرار بگیرد. با این حال ، برخی از کنوانسیون های معروف برای نامگذاری و قرار دادن فایل وجود دارند که این توابع view در آنها موجودند ، و ما این روشها را دنبال خواهیم کرد.پس از اتمام مراحل این آموزش ، وبلاگ Django شما یک پست جدید را به آدرس اینترنتی IP-یا-domain / post شما وارد می کند.پیش نیازهااین آموزش بخشی از مجموعه توسعه Django است و ادامه آن سری میباشد.اگر این مجموعه را دنبال نکرده اید ، فرضیات زیر را مطرح می کنیم:• باید نسخه 3 یا بالاتر Django را نصب کرده باشید.• برنامه Django خود را به یک پایگاه داده وصل کرده اید. ما از MySQL استفاده می کنیم ، و می توانید با دنبال کردن قسمت دوم مقاله Django ،تحت عنوان “نحوه ایجاد یک برنامه Django و اتصال آن به یک بانک اطلاعاتی” ، به این اتصال دست یابید.• شما با یک سیستم عامل مستقر در یونیکس کار می کنید ، ترجیحاً با سرور مجازی ابری اوبونتو 20.04 زیرا این سیستمی است که ما روی آن آزمایش کرده ایم. اگر می خواهید Django را در محیطی مشابه تنظیم کنید ، لطفاً به آموزش “نحوه نصب Django و ایجاد یک محیط توسعه در اوبونتو 20.04” مراجعه کنید.• رابط کاربری ادمین Django خود را تنظیم کرده اید. شما می توانید این کار را با پیروی از آموزش ادمین Django انجام دهید.از آنجا که این راهنما در وهله اول با نماهای Django سروکار دارد ، حتی اگر ستاپ کمی متفاوتی دارید، می توانید آن را دنبال کنید.مرحله 1 – ایجاد توابع viewدر درون ترمینال خود ، ابتدا باید وارد دایرکتوری مربوطه شوید و محیط مجازی Python خود را فعال کنید. اگر همراه این مجموعه بوده باشید ، می توانید دستورات زیر را وارد کنید. مهم است که همیشه در هنگام تهیه برنامه خود از یک محیط برنامه نویسی پایتون استفاده کنید تا اطمینان حاصل شود که کد شما درج شده است و شما با ستاپ درست کار می کنید.⦁ $ cd ~/my_blog_app⦁⦁ $ . env/bin/activateاکنون که محیط مجازی شما فعال شده است ، بیایید به دیرکتوری blogsite برویم و در آنجا یک فایل پایتون را باز خواهیم کرد و اولین تابع view خود را ایجاد می کنیم.⦁ (env) Sammy@ubuntu:$ cd ~/my_blog_app/blog/blogsite⦁برای مشاهده ویرایش ، با استفاده از nano یا ویرایشگر متن مورد نظر خود ، فایل views.py را باز کنید.⦁ (env) Sammy@ubuntu:$ nano views.py⦁با باز کردن فایل ، باید کدی مشابه با این را پر کنید:/my_blog_app/blog/blogsite/views.pyfrom django.shortcuts import render# Create your views here.عبارت ورود را که تابع render () را از کتابخانه django.shortcuts وارد می کند، نگه خواهیم داشت. تابع render()به ما امکان می دهد تا یک الگو و یک متن را با هم ترکیب کنیم تا بتوانیم آبجکت HttpResponse مناسب را برگردانیم. این را به خاطر بسپارید زیرا با هر نمایی که می نویسیم ، مسئولیت نمونه سازی ، پر کردن و بازگرداندن HttpResponse را بر عهده داریم.در مرحله اول ما اولین نمای خود را اضافه خواهیم کرد که از کاربران با صفحه ایندکس استقبال می کند. تابع HttpResponse () را از کتابخانه http در Django وارد میکنیم. با استفاده از آن تابع ، متن را ارسال می کنیم تا هنگام درخواست صفحه وب نمایش داده شود.~/my_blog_app/blog/blogsite/views.pyfrom django.shortcuts import renderfrom django.http import HttpResponsedef index(request):return HttpResponse(‘Hello, welcome to the index page.’)پس از آن ، یک تابع دیگر اضافه خواهیم کرد که پست شخصی را که می خواهیم بعداً در آموزش ایجاد کنیم ، نمایش می دهد.~/my_blog_app/blog/blogsite/views.py…def individual_post(request):return HttpResponse(‘Hi, this is where an individual post will be.’)فایل نهایی views.py اکنون به شرح زیر خواهد بود.~/my_blog_app/blog/blogsite/views.pyfrom django.http import HttpResponsefrom django.shortcuts import renderdef index(request):return HttpResponse(‘Hello, welcome to the index page.’)def individual_post(request):return HttpResponse(‘Hi, this is where an individual post will be.’)پس از پایان ویرایش فایل ، حتما آن را ذخیره کنید و خارج شوید. در nano ، می توانید CTRL و X ، سپسY ، و ENTER را فشار دهید.در حال حاضر ، هیچ URL مشخص شده ای که این توابع به آن اشاره کند وجود ندارد ، بنابراین باید آن را به فایل urlpatterns خود در فایل پیکربندی URL اضافه کنیم. با افزودن نماها، اجازه خواهیم داد که از طریق این فایل پیکربندی به نگاشت URLها به آنها بپردازیم تا بتوانیم صفحاتی را که ایجاد کرده ایم مشاهده کنیم.مرحله 2 – URL را به نماها نگاشت کنیدبا Django ، می توانیم URL های خود را طراحی کنیم تا با برنامه خود استفاده کنیم. این کار در پایتون خالص با استفاده از فایلی که معمولاً به URLconf یا فایل “پیکربندی URL” شناخته می شود انجام می گردد.برای نمایش صفحه وب ، Django ابتدا باید ماژول URLconf را برای استفاده تعیین کند ، سپس به دنبال urlpatterns ، یک ساختار داده لیستی است که شامل همه الگوهای URL میباشد. سپس Django از هر الگوی URL عبور می کند تا اینکه اولین موردی را پیدا کند که مطابقت داشته باشد. پس از یافتن یک انطباق ، Django نمای مرتبط را پیدا می کند ، و آن تابع نما داده های مربوط به الگوی URL و یک آبجکت HttpRequest را دریافت می کند. اگر در هر مرحله در طول این فرآیند خرابی وجود داشته باشد ، به جای آن ، یک نمای خطا نشان داده می شود.در این بخش ، ما با دو فایل urls.py مختلف در دو دیرکتوری مختلف برنامه خود کار خواهیم کرد.در حالی که در دیرکتوری ~ / my_blog_app / blog / blogsite هستید، فایل urls.py – که به عنوان فایل URLconf شما نیز شناخته شده است – را برای ویرایش باز کنید. ما در اینجا از nano برای ویرایش فایل استفاده خواهیم کرد.⦁ (env) Sammy@ubuntu:$ nano urls.py⦁با لیست urlpatterns فایل را به گونه ای تغییر دهید که مشابه فایل زیر باشد.~/my_blog_app/blog/blogsite/urls.pyfrom django.urls import pathfrom . import viewsurlpatterns = [path(”, views.index, name=’index’),path(‘post/’, views.individual_post, name=’individual_post’)]پس از اتمام خطوط بالا را اضافه کنید، فایل را ذخیره کرده و ببندید.پس از به روزرسانی فایل URLconf دیرکتوری blogsite ، آن را در URLconf دیرکتوری blog قرار خواهیم داد وگرنه قابل تشخصی نیست. ما باید این کار را انجام دهیم زیرا در فایل تنظیمات ما به عنوان ROOT_URLCONF تنظیم شده است. این بدان معناست که Django در حال جستجوی urlpatterns در آدرس URL دیرکتوری blog است.برای درج blogsite URLconf در blog URLconf ، باید به آن دیرکتوری برویم.⦁ (env) Sammy@ubuntu:$ cd ~/my_blog_app/blog/blog⦁پس از رفتن به آنجا ، می توانید فایل URLconf را با nano یا ویرایشگر متن دیگر مورد نظر خود باز کنید.⦁ (env) Sammy@ubuntu:$ nano urls.py⦁در این فایل خطوط زیر را اضافه خواهیم کرد تا فایل /blogsite/urls.py را که با آنها کار کرده ایم درج شود ، که در خط دوم نشان داده شده است.~/my_blog_app/blog/blog/urls.pyfrom django.contrib import adminfrom django.urls import include, pathurlpatterns = [path(‘admin/’, admin.site.urls),path(”, include(‘blogsite.urls’))]فایل را ذخیره کنید و ببندید.اکنون برای رفتن به URL هایی که ایجاد کرده ایم می خواهیم مرورگر وب را باز کنیم و تأیید کنیم که آنها متنی را که ما به نماها اضافه کرده ایم را نمایش می دهند. برای دسترسی به فایل manage.py که برنامه Django را ارائه میدهد ، باید به پوشه والد برویم.⦁ (env) Sammy@ubuntu:$ cd ..⦁دستور زیر را صادر کنید. در زیر می توانید 0.0.0.0 را با آدرس IP خود جایگزین کنید.⦁ (env) Sammy@ubuntu:$ python manage.py runserver 0.0.0.0:8000⦁در مرورگر وب خود ، به آدرس IP خود ، پورت 8000 بروید:your-server-ip:8000یک صفحه وب مشابه زیر دریافت خواهید کرد:در مرحله بعد ، به URL زیر بروید:your-server-ip:8000/post/از اینجا باید صفحه وب زیر نمایش داده شود:اکنون تأیید کردیم که دو فایل urls.py کار می کنند و داده ها دقیقاً آنچه را که انتظار داریم را نشان می دهد. اکنون بیایید برخی از داده های واقعی را وارد وبلاگ خود کنیم.مرحله 3 – ایجاد یک پست وبلاگاکنون که اصول کارکرد الگوها و نماهای URL را میدانید ، بیایید یک پست وبلاگ اضافه کنیم و به جای متنی که در فایل های پایتون رمزگذاری کرده ایم ، در صفحه وب نمایش داده شود.پست را از طریق صفحه ادمینی که قبلاً تنظیم کرده ایم ایجاد خواهیم کرد. با استفاده از سرور مجازی خود در برنامه Django ، از یک مرورگر وب استفاده کنید تا به صفحه وبلاگ نویسی ادمین به آدرس زیر بروید:your-server-ip:8000/admin/blogsite/در آنجا ، روی پیوند + Add واقع در ردیف Posts کلیک کنید تا پر کردن دیتابیس با یک پست وبلاگ نمونه را شروع کنیدبا کلیک روی لینک ، فرم ورودی مانند این را دریافت خواهید کرد:هر گاه می خواهید پستی اضافه کنید ، برای این کار به این صفحه می روید. از طرف دیگر ، می توانید پست ها را با لینک تغییر ویرایش کنید.در فرم موجود ، می توانید قسمتهای زیر را ویرایش کنید:فیلد محتواعنوان عنوان پست مورد نظر را اینجا اضافه کنید. به عنوان مثال My First Blog Postکد شماره صفحه به قسمتی از URL اشاره دارد که المان آدرس وب معتبر را با کلیدواژه های قابل خواندن معرفی میکند. عموما از عنوان صفحه گرفته میشود. بنابراین در این حالت میتوانیم از my-first-blog-post استفاده کنیممحتوا بدنه پست وبلاگ شماست. برای مثال ما فقط Hello, World! را اضافه میکنیم، اما شما میتوانید هر متن طولانی وارد کنید.نویسنده در این فیلد نام و نام کاربری مربوطه را اضافه کنید. ما از sammy استفاده میکنیمفرم پست وبلاگ را همانطور که می بینید برای اهداف تست خود پر کنید.هنگامی که داده های مثال را به صفحه اضافه کردید ، روی دکمه SAVE کلیک کنید. صفحه تأیید زیر را دریافت خواهید کرد:تبریک می گویم! شما اولین پست وبلاگ خود را ایجاد کرده اید!در مرحله بعد ، بررسی می کنیم که آیا یک ردیف به پایگاه داده MySQL اضافه کرده است و شامل داده هایی که تازه وارد رابط کاربری سرور مجازی کرده ایم میباشد.مرحله 4 – نمایش داده های بانک اطلاعاتیدر این مرحله ، باید به MySQL برویم ، بنابراین فرآیند فعلی سرور مجازی را از طریق ترمینال با تایپ کردن CTRL + C متوقف کنید ، سپس مفسر MySQL خود را باز کنید. کاربر ما برای پایگاه داده برنامه Django ، djangouser میباشد ، اما حتما از کاربر مناسب برای پروژه خود استفاده کنید.⦁ (env) sammy@ubuntu:$ mysql -u djangouser⦁وقتی وارد MySQL شدید ، به پایگاه داده blog_data (یا پایگاه داده ای که برای پروژه شما صحیح است) بروید:⦁ Mysql> use blog_data;⦁سپس محتوای جدول blogsite_post را نمایش دهید.⦁ Mysql> select * from blogsite_post;⦁خروجی مشابه زیر را دریافت خواهید کرد که باید اطلاعات اضافه شده شما به رابط کاربری ادمین را نشان دهد.Output+—-+——————–+——————–+—————+—————————-+——–+| id | title | slug | content | created_on | author |+—-+——————–+——————–+—————+—————————-+——–+| 1 | My First Blog Post | my-first-blog-post | Hello, World! | 2020-05-14 00:30:03.186564 | Sammy |+—-+——————–+——————–+—————+—————————-+——–+1 row in set (0.00 sec)همانطور که در خروجی نشان داده شده است ، یک ردیف داده برای پستی که اضافه کرده ایم وجود دارد. اکنون بیایید این داده ها را به تابع view برای پست ها ارجاع دهیم. برای خروج از مفسر MySQL از CTRL + D استفاده کنید.به برنامه فایل views.py در داخل برنامه blogsite خود بروید.⦁ (env) sammy@ubuntu:$ cd ~/my_blog_app/blog/blogsite⦁اکنون فایل را باز کنید تا بتوانیم داده های جدید خود را وارد کنیم.⦁ (env) sammy@ubuntu:$ nano views.py⦁فایل را ویرایش کنید تا همانند فایل زیر باشد.~/my_blog_app/blog/blogsitefrom django.shortcuts import renderfrom django.http import HttpResponsefrom .models import Postdef index(request):return HttpResponse(‘Hello, welcome to the index page.’)def individual_post(request):recent_post = Post.objects.get(id__exact=1)return HttpResponse(recent_post.title + ‘: ‘ + recent_post.content)در کد بالا ، عبارت ورودی دیگری را برای پست اضافه کردیم. رشته نقل قول شده را نیز از HttpResponse حذف کردیم و آن را با داده های پست وبلاگ خود جایگزین کردیم. برای ارجاع داده ها برای یک آبجکت خاص ، از شناسه پست وبلاگ در ارتباط با آبجکت مورد نظر که میخواهیم نمایش دهیم استفاده می کنیم و آن شناسه را در متغیری به نام recent_post ذخیره می کنیم. سپس می توانیم با اضافه کردن فیلد با جداکننده دوره ، فیلد های خاصی از آن آبجکت را بدست آوریم.پس از ذخیره کردن و بستن فایل ، برای اجرای برنامه Django به مکان فایل management.py بروید.⦁ (env) sammy@ubuntu:$ cd ~/my_blog_app/blog⦁⦁ (env) sammy@ubuntu:$ python manage.py runserver 0.0.0.0:8000از یک مرورگر وب ، به آدرس زیر بروید:your-server-ip:8000/post/در اینجا ، ما تغییراتی را که ایجاد کرده ایم خواهیم دید. صفحه مشابه این خواهد بود ، متنی را که به پست اضافه کردید نشان داده می شود.پس از پایان یافتن صفحه ، CTRL + C را در ترمینال فشار دهید تا روند کار متوقف شود.برای غیرفعال کردن محیط برنامه نویسی خود ، می توانید دستور deactivate را تایپ کرده و سپس از سرور مجازی خارج شوید.نتیجهدر این آموزش نماها را ایجاد کردیم، الگوهای URL را نگاشت کردیم ، و متن را در صفحه وب از پایگاه داده پست وبلاگ خود نمایش دادیم.آموزش بعدی نحوه استفاده از HTML برای ایجاد قالب های Django و نحوه زیباسازی را پوشش میدهد. تاکنون این مجموعه مدلهای Django و نماهای Django را پوشش داده است. قالب ها آخرین قسمت مهم و بنیادی برای پایه و اساس برنامه Django شما هستند.برچسب‌ها:Django