首页 > 其他 > 详细

userwww1869922comnameI99O883666Iemail

时间:2019-03-19 23:53:06      阅读:23      评论:0      收藏:0      [点我收藏+]

标签:created   感觉   use   一个表   渲染   前端   打包   后台   样式   

参照大部分博客评论的样式,我们的 BlogComment Model 包含这些字段:

user_name:用户在评论前先要填写他们想使用的昵称

user_email:用户在评论前先要填写他们想使用的邮箱

body:用户提交的评论内容

created_time:评论提交时间

article:评论关联的铁牛棋牌森林舞会,因为一个评论只能关联某一篇铁牛棋牌森林舞会,而一篇铁牛棋牌森林舞会下可能有多个评论,因此是一对多的关系,使用 ForeignKey

评论的表单

表单用来给服务器后台提交用户填写的数据,例如平时我们看到的填写登录、注册信息的页面就是一个登录、注册表单,用户填写表单信息后,点击提交按钮,表单中填写的内容就会打包发送给服务器后台。

我们需要为用户填写评论设置一个表单,django 的 form 模块为我们提供了自动生成表单的功能,如果对表单不熟悉请参阅:官方文档:表单概述 ,以了解基本的表单使用方法(如果你对表单感觉很陌生的话)。

下面我们使用 Django 的 ModelForm ( django ModelForm 介绍 )类为我们自动生成表单。首先在 blog 目录下新建一个 forms.py (和 models.py 同一目录)文件用来存放 form 的代码:

Django学习与实战(六):铁牛棋牌森林舞会评论

请点击阅读原文,查看详细代码

视图函数

这里我们一如既往坚持使用基于类的通用视图,由于涉及到评论表单的提交处理,因此我们使用 FormView。这里对 FormView 的使用稍作讲解。

在 Django 的基于函数的视图中,涉及表单的处理的视图其逻辑一般是这样的:

Django学习与实战(六):铁牛棋牌森林舞会评论

请点击阅读原文,查看详细代码

即,首先判断用户是否通过表单 POST 了数据过来,如果是,则根据 POST 过来的数据构建一个表单,如果数据验证合法(form.is_valid),则创建评论,否则返回表单提交页。如果没有 POST 数据,则做其他相应的事情。FormView 把这些逻辑做了整合,无需写那么多 if else 语句:

Django学习与实战(六):铁牛棋牌森林舞会评论

请点击阅读原文,查看详细代码

为了方便地重定向回原来提交评论的铁牛棋牌森林舞会详情页面,我们为铁牛棋牌森林舞会(Article)的模型新增一个方法:get_absolute_url,调用该方法将得到该 Article 对应的 url,例如这是铁牛棋牌森林舞会 1 的 url/article/1,这样调用 HttpResponseRedirect 后将返回该 url 下的铁牛棋牌森林舞会详情页。

Django学习与实战(六):铁牛棋牌森林舞会评论

请点击阅读原文,查看详细代码

同时为了在详情页渲染一个评论表单,稍微修改一下 ArticleDetailView 的视图函数,把评论表单 form 插入模板上下文中:

Django学习与实战(六):铁牛棋牌森林舞会评论

请点击阅读原文,查看详细代码

URL 设置

Django学习与实战(六):铁牛棋牌森林舞会评论

设置模板文件

新增了一个 comment.html 文件以渲染评论表单和评论列表,并且修改了 detail.html 文件以在铁牛棋牌森林舞会详情页显示评论表单和评论列表,修改了blog/tatic 下的 style.css 为评论添加样式,由于代码比较多,就不贴出来了,主要是 html 和 css 的前端相关代码,请到 GitHub 仓库 更新相关的模板和静态资源文件。

userwww1869922comnameI99O883666Iemail

标签:created   感觉   use   一个表   渲染   前端   打包   后台   样式   

原文:https://blog.51cto.com/14248401/2365547

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 designnerd.net 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号