انتقال داده توسط URL
پیش از ورود به بحث اصلی، لازم است با نحوه انتقال دادهها به رابط کاربری آشنا شویم. فرض کنید صفحهای با آدرس project/ وجود داشته باشد که عنوان یک پروژه خاص را نمایش دهد — بهطوریکه این عنوان از طریق دادههای داینامیکی (مانند پارامترهای URL یا وضعیت برنامه) به رابط کاربری ارسال و سپس نمایش داده میشود.
برای دسترسی به این مقصود میبایست فرآیند زیر، مرحله به مرحله طی شود.
- ابتدا در فایل URL اپ، الگوی URL مربوطه مببایست تعربف گردد و در فرآیند تعریف باید به جنگو اعلام شود که این مسیر آدرس، هنگام درخواست، نیاز به آرگومان ورودی خواهند داشت:
coreapp/urls.py
urlpatterns = [
path('', views.Home, name='Home'),
path('project-name/<str:title>', views.ProjectInfo, name='ProjectTitle'),
]
در اینجا، به هنگام تعریف الگوی URL، به جنگو اعلام کردیم که آدرس book-name/ به هنگام درخواست میبایست یک آرگومان وروردی با عنوان title از نوع متن یا عبارت – str – به همراه خود داشته باشد.
⚠️ درصورت ارسال نشدن آرگومان ورودی به هنگام درخواست URL با پیغام خطا مواجه خواهیم شد.
سپس در تابع view مربوطه، میبایست نحوه تعامل با آرگومان ورودی را تعریف کنیم:
coreapp/views.py
def ProjectInfo(request, title):
return HttpResponse(f'Project Title is: 🡺 {title}')
حال اگر در مرورگر آدرس project-name/Django-Tutorial-Project را وارد کنیم، جنگو این درخواست را بر اساس الگوی تعریفشده در فایل urls.py تطبیق میدهد. در این الگو، بخش project-name ثابت است و هر مقداری که پس از آن آمده باشد (در اینجا Django-Tutorial-Project) بهعنوان پارامتر title به تابع ProjectInfo() ارسال میشود. این ویو سپس یک پاسخ ساده شامل عبارت «Project Title is: 🡺 Django-Tutorial-Project» را تولید کرده و به مرورگر بازمیگرداند؛ بنابراین، کاربر دقیقاً همین متن را در صفحه مرورگر خواهد دید.
