افزودن لینک به جزئیات در جنگو

قالب جزئیات (Details Template)

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

با ایجاد یک قالب (template) جدید به نام details.html شروع کنید:

my_tennis_club/members/templates/details.html:
				
					<!DOCTYPE html>
<html>

<body data-rsssl=1>

<h1>{{ mymember.firstname }} {{ mymember.lastname }}</h1>
  
<p>Phone: {{ mymember.phone }}</p>
<p>Member since: {{ mymember.joined_date }}</p>

<p>Back to <a href="/members">Members</a></p>

</body>
</html>
				
			

افزودن لینک در قالب all_members

لیست موجود در all_members.html باید قابل کلیک باشد و شما را با شناسه عضوی که روی آن کلیک کرده اید به صفحه جزئیات هدایت کند:

my_tennis_club/members/templates/all_members.html:
				
					<!DOCTYPE html>
<html>
<body data-rsssl=1>

<h1>Members</h1>
  
<ul>
  {% for x in mymembers %}
    <li><a href="details/{{ x.id }}">{{ x.firstname }} {{ x.lastname }}</a></li>
  {% endfor %}
</ul>

</body>
</html>
				
			

ساخت view جدید

سپس یک view جدید در فایل views.py ایجاد کنید که با درخواست های دریافتی به آدرس /details/ سر و کار دارد:
my_tennis_club/members/views.py:
				
					from django.http import HttpResponse
from django.template import loader
from .models import Member

def members(request):
  mymembers = Member.objects.all().values()
  template = loader.get_template('all_members.html')
  context = {
    'mymembers': mymembers,
  }
  return HttpResponse(template.render(context, request))
  
def details(request, id):
  mymember = Member.objects.get(id=id)
  template = loader.get_template('details.html')
  context = {
    'mymember': mymember,
  }
  return HttpResponse(template.render(context, request))
				
			
view که تحت عنوان details ساختیم، موارد زیر را انجام می دهد:
  • id را به عنوان آرگومان دریافت می کند.
  • از id برای قرار دادن رکورد صحیح در جدول Member استفاده می کند.
  • قالب details.html را بارگیری می کند.
  • یک شیء حاوی member ایجاد می کند.
  • شیء را به قالب (template) ارسال می کند.
  • HTML رندر شده توسط template را خروجی می دهد.

افزودن URLs

اکنون باید مطمئن شویم که آدرسِ (url) /details/ به view صحیح، بهمراه id به عنوان پارامتر اشاره می کند.
فایل urls.py را باز کنید و view با نام details را به لیست urlpatterns اضافه کنید:
my_tennis_club/members/views.py:
				
					from django.urls import path
from . import views

urlpatterns = [
    path('members/', views.members, name='members'),
    path('members/details/<int:id>', views.details, name='details'),
]
				
			

اگر تمام مراحل را در رایانه شخصی خود انجام داده اید، می توانید نتیجه را در مرورگر خود مشاهده کنید: 127.0.0.1:8000/members/

سرور را با رفتن به پوشه /my_tennis_club/ و اجرای این دستور راه اندازی کنید:

				
					py manage.py runserver