菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

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

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持