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"模板中添加链接
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 命令重新启动它:
python manage.py runserver

