Django Thêm liên kết đến chi tiết
Mẫu chi tiết
Bước tiếp theo trong trang web của chúng tôi sẽ là thêm trang Chi tiết, nơi chúng tôi có thể liệt kê thêm thông tin chi tiết về một thành viên cụ thể.
Bắt đầu bằng cách tạo một mẫu mới có tên là details.html
:
my_tennis_club/members/templates/details.html
:
<!DOCTYPE html>
<html>
<body>
<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>
Thêm liên kết vào mẫu tất cả thành viên
Danh sách trong all_members.html
phải nhấp vào được và đưa bạn đến trang chi tiết có ID của thành viên mà bạn đã nhấp vào:
my_tennis_club/members/templates/all_members.html
:
<!DOCTYPE html>
<html>
<body>
<h1>Members</h1>
<ul>
{% for x in mymembers %}
<li><a href="details/{{ x.id }}">{{ x.firstname }} {{ x.lastname }}</a></li>
{% endfor %}
</ul>
</body>
</html>
Tạo chế độ xem mới
Sau đó, tạo chế độ xem mới trong tệp views.py
, chế độ xem này sẽ xử lý các yêu cầu gửi đến url /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))
Chế độ xem details
thực hiện như sau:
- Lấy
id
làm đối số. - Sử dụng
id
để xác định vị trí bản ghi chính xác trong bảng Thành viên. - tải mẫu chi
details.html
. - Tạo một đối tượng chứa thành viên.
- Gửi đối tượng đến mẫu.
- Xuất ra HTML được mẫu hiển thị.
Thêm URL
Bây giờ chúng ta cần đảm bảo rằng url /details/
trỏ đến chế độ xem chính xác, với id
làm tham số.
Mở tệp urls.py
và thêm chế độ xem chi tiết vào danh sách urlpatterns
:
my_tennis_club/members/urls.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'),
]
Chạy ví dụ » Nếu bạn đã làm theo tất cả các bước trên máy tính của mình, bạn có thể xem kết quả trong trình duyệt của riêng mình: 127.0.0.1:8000/members/
.
Nếu máy chủ ngừng hoạt động, bạn phải khởi động lại bằng lệnh runserver
:
py manage.py runserver