Menu
×
   ❮   
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 模板中添加链接

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

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.