django 初学者笔记(原创Django第九章查看博客文章)
20大进阶架构专题每日送达
Django入门:第九章、查看博客文章
回顾
上一章中,我们成功的把博客标题显示出来,那么如何才能查看文章内容,从功能上来说,点击文章标题后呈现其详细内容。
因此,文章标题需要做一个超链接,对象就是文章详情页。
修改home.html
templates/home.html
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>我的博客</title></head><body><h1>我的博客</h1>{% for blog in blogs %}<li><a href="{{ blog.id }}">{{ blog.title }} </a></li> <br>{% endfor %}</body></html>
修改完成后,我们刷新页面,发现每个标题就是一个超链接,当然,此时单击,并不能显示其详情。如图:
编辑./blog/views.py
./blog/views.py 我们增加响应查看博客文章内容请求的函数blog_article:
from django.shortcuts import renderfrom .models import BlogArticles# Create your views here.def home(request):blogs = BlogArticles.objects.allreturn render(request, "home.html", {"blogs": blogs})def blog_article(request, article_id):article = BlogArticles.objects.get(id=article_id)publish_time = article.publishreturn render(request, "content.html", {"article": article, "publish": publish_time})
在函数blog_ariticle(request, article_id)中,article_id参数的目的是为了获得URL中每篇博客文章的id
创建./templates/content.html
在templates目录下,创建一个content.html
文件,并写入如下代码:
./templates/content.html
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>{{ article.title }}</title></head><body><h1 style="text-align: center">{{ article.title }}</h1><div style="text-align: center">{{ article.author.username }}<span style="margin-left: 20px">{{ article.publish }}</span></div><div>{{ article.body }}</div></body></html>
配置URL
在myblog/urls.py
中增加新的URL路径:
myblog/urls.py*
from django.contrib import adminfrom django.urls import pathfrom django.conf.urls import urlfrom blog import viewsurlpatterns = [path('admin/', admin.site.urls),url(r'^$', views.home, name='home'),path('<int:article_id>/', views.blog_article), # 新增]
测试
我们此时此刻再单击一下其中一个文章题目,比如雨霖铃·寒蝉凄切,可以看到如下页面:
注意
如果我们修改最后代表文章id的数字,如果改成9,将会出现如下页面:
因为不存id为9的文章,所以报错,而且显示了错误的完整信息。
为了避免出现上诉错误,我们应该在响应此请求的函数中对这种异常请求进行处理。适当修改./blog/view.py中的blog_article函数。
from django.shortcuts import render, get_object_or_404from .models import BlogArticles# Create your views here.def home(request):blogs = BlogArticles.objects.allreturn render(request, "home.html", {"blogs": blogs})def blog_article(request, article_id):# article = BlogArticles.objects.get(id=article_id)article = get_object_or_404(BlogArticles, id=article_id)publish_time = article.publishreturn render(request, "content.html", {"article": article, "publish": publish_time})
再次请求http://127.0.0.1:8000/9/,我们会发现在Debug模式下的(404)错误:
如果我们把 myblog/settings.py
中的DEBUG = True,改为 DEBUG = False,并且设置 ALLOWED_HOSTS = ['127.0.0.1'],类似下图:
myblog/settings.py
DEBUG = FalseALLOWED_HOSTS = ['127.0.0.1']
再重新刷新这个页面,将会看一个标准的404页面,如图:
总结
Django入门笔记到这一步,简单的博客就搭建完成,虽然很简陋,页面不美观,但显示了Django在网站开发中的最基本结构。
我们学会了创建一个简单的HelloWorld视图,创建了第一个模型、迁移了数据库,试用了Model API。同时还配置了Django模板引擎,希望大家多多练习,熟悉这个过程。
我们的优秀博客终于能向大家展示了,希望你能喜欢。
———— e n d ————
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com