Django开发如何为每个用户车辆帖子配置独立详情访问链接
实现每个帖子独立详情页的操作步骤
1. 新增详情页视图函数(修改views.py)
首先更新views.py头部导入,新增详情视图:
from django.shortcuts import render, get_object_or_404 # 新增导入get_object_or_404 from .models import * from django.http import HttpResponse # 原有视图函数保持不变,在末尾新增以下代码 def post_detail(request, pk): # 根据传入的主键id查询对应车辆帖子,查询不到则返回404 car = get_object_or_404(Userpost, pk=pk) context = {'car': car} return render(request, 'store/post_detail.html', context)
2. 新增详情页路由(修改urls.py)
在urlpatterns列表中新增详情页的带参路由:
from django.urls import path from . import views urlpatterns = [ path('', views.home, name = "home"), path('posts/', views.posts, name = "posts"), path('store/', views.store, name = "store"), # 新增详情页路由,<int:pk>表示接收整数类型的帖子主键作为参数 path('posts/<int:pk>/', views.post_detail, name='post_detail'), ]
3. 修改列表页View按钮跳转链接(修改现有列表模板)
把模板中原先占位的#替换为动态生成的详情页链接:
<!-- 把这行 --> <a class="btn btn-outline-success" href="#">View</a> <!-- 替换为 --> <a class="btn btn-outline-success" href="{% url 'post_detail' car.pk %}">View</a>
修改后每个帖子的View按钮会自动生成对应id的专属详情页访问地址。
4. 新建详情页模板(创建store/post_detail.html文件)
可以参考以下示例编写详情页,按需展示你需要的字段:
{% extends 'store/main.html' %} {% load static %} {% block content %} <div class="container"> <div class="row"> <div class="col-lg-6"> <img src="{{car.imageURL}}" class="img-fluid" alt="{{car}}"> </div> <div class="col-lg-6"> <h2>{{car.Year}} {{car.Make}} {{car.Model}}</h2> <h3>售价:${{car.Price|floatformat:2}}</h3> <hr> <p><strong>里程:</strong>{{car.Mileage}}</p> <p><strong>联系邮箱:</strong>{{car.email}}</p> <p><strong>发布时间:</strong>{{car.date_published}}</p> <p><strong>发布用户:</strong>{{car.user.username|default:"匿名用户"}}</p> <hr> <button class="btn btn-outline-secondary add-btn">Add to Cart</button> <a href="{% url 'posts' %}" class="btn btn-outline-primary">返回车辆列表</a> </div> </div> </div> {% endblock content %}
内容的提问来源于stack exchange,提问作者Gabriel Trezza
相关产品推荐
相关产品推荐

