URL و View در جنگو

در درس‌های قبل با Django آشنا شدیم، محیط مجازی را ساختیم، Django را نصب کردیم و اولین پروژه خودمان را ایجاد کردیم. در این درس می‌خواهیم وارد یکی از مهم‌ترین بخش‌های Django شویم:

  • URL چیست و چه کاری انجام می‌دهد؟
  • View چیست؟
  • Django چگونه یک درخواست کاربر را دریافت می‌کند؟
  • چگونه یک URL را به یک View متصل کنیم؟
  • چگونه اطلاعات را از View به مرورگر ارسال کنیم؟
  • چگونه چند صفحه مختلف برای سایت ایجاد کنیم؟

در پایان این درس، پروژه ما چند صفحه خواهد داشت و کاربر می‌تواند با وارد کردن URLهای مختلف، صفحات مختلف سایت را مشاهده کند.

فهرست مطالب

URL در Django چیست؟

URL همان آدرسی است که کاربر در مرورگر وارد می‌کند. برای مثال:

https://example.com/
https://example.com/courses/
https://example.com/about/

وقتی کاربر یک URL را در مرورگر وارد می‌کند، Django باید متوجه شود که این درخواست مربوط به کدام بخش از برنامه است. برای این کار از URL Routing استفاده می‌کنیم. یعنی به Django می‌گوییم: اگر کاربر این URL را وارد کرد، این View را اجرا کن.

فایل urls.py

وقتی یک پروژه Django ایجاد می‌کنیم، Django به صورت خودکار فایلی به نام urls.py ایجاد می‌کند. این فایل وظیفه دارد URLهای پروژه را مدیریت کند. اگر فایل urls.py را باز کنیم، معمولاً چیزی شبیه به شکل زیر می‌بینیم.

در اینجا دو مورد مهم داریم. اول تابع path برای تعریف URLها. و دوم urlpatterns که لیست URLهای پروژه را داخل آن تعریف می‌کنیم.

Path و Route

Path و Route

()path تابعی است که برای تعریف مسیرهای URL استفاده می‌شود.

'/courses' مسیر URL است. که به آن یک Route می‌گوییم و مشخص می‌کند کاربر با چه آدرسی به یک بخش از سایت دسترسی پیدا کند.

View چیست؟

حالا باید ببینیم وقتی کاربر یک URL را درخواست کرد، چه چیزی باید پاسخ او را ایجاد کند. اینجا مفهوم View وارد می‌شود. View بخشی از برنامه است که درخواست کاربر را دریافت می‌کند و یک پاسخ به او برمی‌گرداند. به زبان ساده:

کاربر ← URL ← View ← Response ← مرورگر

برای مثال، کاربر وارد آدرس /courses/ می‌شود، جنگو بررسی می‌کند که این URL به کدام View مربوط است. سپس View اجرا می‌شود و مثلاً این متن را برمی‌گرداند:

لیست دوره‌های آموزشی

ایجاد اولین View

برای اینکه View ایجاد کنیم، معمولاً آن را داخل یک App قرار می‌دهیم. بنابراین ابتدا یک App برای پروژه ایجاد می‌کنیم. در درس قبلی یادتان هست که یک App با نام courses از طریق دستور زیر ایجاد کردیم:

python manage.py startapp courses

بعد از ایجاد app ، از داخل پوشه courses فایل views.py را باز کنید. حالا یک View ساده ایجاد می‌کنیم:

def home(request):
    return HttpResponse(“سلام، به سایت آزمون پلاس خوش آمدید!”)

در اینجا یک تابع به نام home ایجاد کرده‌ایم. که پارامتر request درخواست کاربر را دریافت می‌کند و این قسمت:

return HttpResponse(…)

پاسخ را به مرورگر برمی‌گرداند.

HttpResponse چیست؟

برای ارسال یک پاسخ ساده به مرورگر می‌توانیم از HttpResponse استفاده کنیم. مثلاً:

return HttpResponse("Hello Django")

در این حالت مرورگر متن زیر را نمایش می‌دهد:

Hello Django

اتصال View به URL

حالا باید View را به یک URL متصل کنیم. ابتدا در فایل urls.py که در درس قبلی برای اپ courses  ایجاد کرده بودیم (یعنی در مسیر courses/urls.py) این خط را اضافه کنیم:

path(”, views.home, name=’home’),

و در نهایت در فایل اصلی پروژه (یعنی در مسیر config/urls.py) این خط را اضافه می‌کنیم:

,path(”, include(‘courses.urls’))
تابع ()include

تابع include() به Django می‌گوید: URLهای مربوط به این قسمت را از فایل URL مشخص‌شده دریافت کن. به این ترتیب، به جای اینکه تمام URLهای پروژه را در config/urls.py بنویسیم، می‌توانیم URLهای هر App را در فایل جداگانه خودش مدیریت کنیم.

Named URL

در URLهایی که ایجاد کردیم، از گزینه‌ای به نام name استفاده کردیم. قسمت name یک نام مشخص برای URL تعیین می‌کند. دلیل استفاده از Named URL این است که در قسمت‌های مختلف پروژه، به جای اینکه مستقیماً مسیر URL را بنویسیم، می‌توانیم از نام آن استفاده کنیم.این موضوع در ادامه دوره، مخصوصاً هنگام ساخت Templateها و لینک‌های سایت، اهمیت زیادی پیدا می‌کند.

اجرای پروژه

سرور توسعه Django را اجرا می‌کنیم:

python manage.py runserver

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

سپس مرورگر را باز کرده و وارد آدرس زیر می‌شویم:

http://127.0.0.1:8000/

اگر همه چیز درست باشد، باید این تصویر را ببینیم:

ساخت صفحه درباره ما

صفحات بیشتری را میتوانید به همین ترتیب بسازید. به کدهای نهایی پروژه بعد از ساخته شدن صفحه اصلی، صفحه دوره ها و صفحه درباره ما توجه کنید.

اکنون سه صفحه داریم:

URLViewنتیجه
/homeصفحه اصلی
/courses/coursesدوره‌های آموزشی
/about/aboutدرباره ما

URL با و بدون اسلش

در Django معمولاً URLها را به صورت زیر تعریف می‌کنیم:

path(‘courses/’, courses)

یعنی URL:

/courses/

 

وجود / در انتهای URL در پروژه‌های Django رایج است. پس بهتر است از همان ابتدا یک الگوی ثابت داشته باشیم:

path(‘courses/’, courses)
path(‘about/’, about)
path(‘contact/’, contact)
یک نکته مهم درباره request

request نماینده درخواست ارسال‌شده از طرف کاربر است. این شیء اطلاعات مربوط به درخواست کاربر را در اختیار View قرار می‌دهد. در ادامه دوره، با request کارهای بیشتری انجام خواهیم داد؛ مثلاً: دریافت اطلاعات فرم کاربر

Redirect کردن آدرس یک صفحه

گاهی ممکن است بخواهیم کاربر را به URL دیگری هدایت کنیم. برای این کار از Redirect استفاده می‌کنیم. در Django می‌توانیم از تابع redirect() استفاده کنیم:

from django.shortcuts import redirect
def old_courses(request):
    return redirect('courses')

در این مثال اگر کاربر بخواهد به صفحه old_courses وارد شود، Django او را به URLای که نام آن courses است هدایت می‌کند. Redirect در پروژه‌های واقعی کاربردهای زیادی دارد. مثلاً زمانی که یک URL قدیمی را به URL جدید منتقل می‌کنیم یا بعد از انجام یک عملیات، کاربر را به صفحه دیگری می‌فرستیم.

📝 تمرین

یک پروژه و داخل آن یک App دلخواه ایجاد کنید که دارای صفحات زیر باشد:
صفحه اصلی
محصولات/ خدمات/ دوره‌های آموزشی
درباره ما
تماس با ما
بلاگ

درس بعدی

در درس بعدی، همین صفحات ساده را از حالت متنی خارج می‌کنیم و Template و HTML را وارد پروژه می‌کنیم و رابط کاربری می‌سازیم.

رفتن به درس بعدی

برای شرکت در آزمون آماده‌اید؟

با ورود به پنل کاربری می‌توانید جهت ثبت نام در آزمون‌ها و دسترسی به منابع آموزشی اقدام نمایید. کارشناسان ما در اسرع وقت با شما تماس می‌گیرند.

شروع کار با Django

شروع کار با Django در دوره آموزش جامع پایتون با مفاهیمی مانند متغیرها، شرط‌ها، حلقه‌ها، توابع، کلاس‌ها، فایل‌ها و کار

ادامه مطلب »

عملیات CRUD در SQLite

عملیات CRUD درSQLite در بخش قبل با مفهوم پایگاه داده، SQLite و نحوه اتصال پایتون به پایگاه داده آشنا شدیم.

ادامه مطلب »

توابع در پایتون

توابع در پایتون اگر هنگام برنامه‌نویسی مجبور شوید یک قطعه کد را بارها تکرار کنید، برنامه شما طولانی، شلوغ و

ادامه مطلب »

مجموعه در پایتون

مجموعه (Set) در پایتون به زبان ساده، Set مجموعه‌ای از عناصر منحصربه‌فرد (Unique) است که ترتیب مشخصی ندارد و اجازه

ادامه مطلب »

تاپل در پایتون

تاپل (Tuple) در پایتون بعد از آشنایی با لیست (List)، نوبت به یکی دیگر از ساختارهای داده در پایتون یعنی

ادامه مطلب »

لیست در پایتون

لیست (List) در پایتون پرکاربردترین ساختار داده​ تا اینجا یاد گرفتید که هر متغیر فقط یک مقدار را در خود

ادامه مطلب »

آموزش نصب پایتون

آموزش نصب پایتون و ابزارهای موردنیاز (راهنمای کامل برای ویندوز) اگر تصمیم گرفته‌اید برنامه‌نویسی را یاد بگیرید، احتمالاً نام زبان

ادامه مطلب »