You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中类视图实现列表与详情视图跳转问题求助

解决Django类视图ListView跳转DetailView的问题

嘿,我来帮你搞定这个基于类视图的详情页跳转问题!你现在遇到的问题主要集中在URL配置、模板链接以及模板路径这几个地方,咱们一步步调整就能解决:

1. 修正URL配置(核心问题!)

Django 2.0及以后版本的path()语法不需要使用正则表达式,而是用路径转换器来匹配参数。另外,DetailView默认会以pk(主键)作为查询参数,而且你得给详情页URL设置name,这样模板里才能通过{% url %}标签生成链接。

修改你的urls.py:

path('list/', BlogList.as_view(), name='list'),
path('<int:pk>/', BlogDetail.as_view(), name='blog-detail'),

小提示:给list路径末尾加个斜杠是Django的规范用法,避免访问时出现重定向问题。

2. 修复DetailView的模板路径

你的详情页模板放在templates/blog/目录下,但当前BlogDetail里的template_name只写了blogdetail.html,Django会找不到这个模板。需要补全路径:

修改views.py里的BlogDetail类:

class BlogDetail(DetailView):
    model = BlogPost
    template_name = 'blog/blogdetail.html'
    # 可选:如果你想在模板里用自定义的上下文变量名(比如不用默认的object),可以加下面这行
    # context_object_name = 'blog_post'

3. 给列表项添加跳转链接

现在你的列表模板只是显示了标题和日期,但没有可点击的入口。需要把标题改成跳转链接,用{% url %}标签生成对应详情页的URL:

修改列表模板bloglist.html:

<div class="post-body">
 {% for p in post %}
 <blockquote>
     <a href="{% url 'blog-detail' p.pk %}">{{ p.title }}</a></br></br>{{ p.Date }}
 </blockquote>
 {% endfor %}
</div><!-- end post-body -->

这里的p.pk就是每条博客的主键,会传给URL里的<int:pk>参数,点击标题就能直接跳转到对应的详情页啦!

如果你的模型主键用的是id(其实Django默认主键就是id,pk是它的别名),也可以把URL里的<int:pk>改成<int:id>,然后在BlogDetail里添加pk_url_kwarg = 'id',不过用pk更通用哦。

内容的提问来源于stack exchange,提问作者Sandeep Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 22:57:35