如何为Django循环生成的服务按钮配置对应详情页跳转?
解决Django循环生成服务按钮跳转专属页面的问题
要实现每个服务按钮跳转到对应专属页面,需要完成以下几个步骤:
1. 新增单个服务详情的视图函数
在views.py中添加处理单个服务详情的逻辑,通过服务的主键(typ)获取对应数据:
def service_detail(request, service_typ): # 根据主键typ查询对应的服务 service = ServiceTypes.objects.get(typ=service_typ) return render(request, 'main/service_detail.html', {'service': service})
2. 配置URL路由
在项目(或对应app)的urls.py中添加服务详情的路由,捕获服务的typ作为参数:
from django.urls import path from . import views urlpatterns = [ # 原有的预约页面路由 path('boka/', views.boka_service, name='boka_service'), # 新增服务详情路由,<str:service_typ>用于接收服务类型参数 path('service/<str:service_typ>/', views.service_detail, name='service_detail'), # 其他路由... ]
3. 修改模板中的跳转链接
将模板里的固定跳转链接,改为动态指向服务详情路由,并传递当前服务的typ参数:
{% for r in services %} <a href="{% url 'service_detail' service_typ=r.typ %}"> <button class="button_x"> <p style="margin-top: -60px; font-size: 15px; font-weight: bold;">{{ r.typ }} {{ r.pris }},- kr</p> <p>{{ r.beskrivning }}</p> </button></a> {% endfor %}
4. 创建服务详情页面模板(可选)
创建main/service_detail.html模板,用于展示单个服务的详细内容:
<h1>{{ service.typ }}</h1> <p>价格:{{ service.pris }},- kr</p> {% if service.beskrivning %} <p>描述:{{ service.beskrivning }}</p> {% endif %}
内容的提问来源于stack exchange,提问作者Steven Meesters
相关产品推荐
相关产品推荐

