Django博客开发实战:详情视图(django数据分析可视化)
itomcoil 2025-06-10 15:46 8 浏览
编程派微信号:codingpy
这个系列这么快又见面了,更新时间临时改到每周五。本系列由编程派与Django学习小组合作发布,申请加入邮件列表的朋友请登陆http://groups.163.com。
上周我们完成了博客的 Model 部分,以及博客的首页视图 IndexView。本节接上周的文档 Django博客开发实战:开篇,我们继续给博客添加功能,以及改善前面不合理的部分。
本教程将带你完成博客的详情页面,即用户点击首页的文章标题或者阅读全文按钮将跳转到文章的详情页面来阅读整篇文章。其次将调整一些目录结构以使其在实践应用中更加合理。
重写 URL
对于一个有多个 app 的项目,把所有的urlpatterns
都放在项目的urls.py
似乎不是一个很合适的选择,为此我们需要在blog
文件夹下新建一个文件urls.py
,把跟这个 app 相关的urlpatterns
都放在这个文件里。
文件中的urlpatterns
看不懂暂时没关系,下面很快就会介绍它。
这样我们就可以判断展示哪个Article了
然后在项目的urls.py
中包含(include)它:
这样,我们就重写了URL,看起来是不是更有条理了?
新增文章详情页
get_object()
返回该视图要显示的对象。如果有设置 queryset,该queryset 将用于对象的源;否则,将使用get_queryset(). get_object()从视图的所有参数中查找pk_url_kwarg
参数; 如果找到了这个参数,该方法使用这个参数的值执行一个基于主键的查询。
新建一个模板 detail.html 来展示我们的文章详情:
整个执行流程就是这样的:
假设用户要访问某篇文章,比如他点击了某篇文章的标题,在模板文件中(首页的模板,代码可以参见 GitHub 上的 index.html),他点击的就是这样一个标签:
<h1 class="title"> <a href="{% url 'blog:detail' article.pk %}">
{{ article.title }}</a></h1>
<a>
标签是一个超链接,用户点击后会跳转到由 href 指定的 url,这里我们使用了 django 自带的模板标签 url 标签,它会自动解析 blog:detail 这个视图函数对应的 url,并且把 article.pk(文章的主键)传递给detail 视图函数 。
detail 的 url 是这样定义的:
url(r'^blog/article/(?P<article_id>\d+)