Django 新增詳情連結
詳情模板
我們網頁的下一步是建立一個“詳情”頁面,在那裡我們可以列出關於特定成員的更多詳細資訊。
首先建立一個名為 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>
在“所有成員”模板中新增連結
在 all_members.html
中的列表應該可以點選,並連結到詳情頁面,同時傳遞你點選的成員的 ID
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>
建立新的檢視
然後在 views.py
檔案中建立一個新的檢視,它將處理訪問 /details/
URL 的請求
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))
details
檢視執行以下操作:
- 獲取
id
作為引數。 - 使用
id
在 Member 表中查詢正確的記錄。 - 載入
details.html
模板。 - 建立一個包含該成員的物件。
- 將物件傳送到模板。
- 輸出由模板渲染的 HTML。
新增 URL
現在我們需要確保 /details/
URL 指向正確的檢視,並將 id
作為引數。
開啟 urls.py
檔案,並將 details 檢視新增到 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'),
]
執行示例 »
如果您已經在自己的計算機上完成了所有步驟,您可以在自己的瀏覽器中看到結果: 127.0.0.1:8000/members/
。
如果伺服器已停止,您需要使用 runserver
命令重新啟動它。
py manage.py runserver