30.显示评论和添加评论功能完成

(1)apps/models.py

class CommentModel(db.Model):
__tablename__='comment'
id=db.Column(db.Integer,primary_key=True,autoincrement=True)
content=db.Column(db.Text,nullable=False)
create_time=db.Column(db.DateTime,default=datetime.now)
post_id=db.Column(db.Integer,db.ForeignKey('post.id'))
author_id = db.Column(db.String(50), db.ForeignKey('front_user.id'), nullable=False) post=db.relationship('PostModel',backref='comments')
author=db.relationship('FrontUser',backref='comments')

生成到数据库

python manage.py migrate

python manage.py upgrade

(2)front/forms.py

class AddCommentForm(BaseForm):
content=StringField(validators=[InputRequired(message='请输入评论内容')])
post_id=IntegerField(validators=[InputRequired(message='请输入评论内容')])

(3)front/views.py

@bp.route('/acomment/',methods=['POST'])
@login_requried
def add_comment():
form=AddCommentForm(request.form)
if form.validate():
content=form.content.data
post_id=form.post_id.data
post=PostModel.query.get(post_id)
if post:
comment=CommentModel(content=content)
comment.post=post
comment.author=g.front_user
db.session.add(comment)
db.session.commit()
return restful.success()
else:
return restful.params_error(message='没有这个帖子')
else:
return restful.params_error(form.get_error())

(4)front/front_base.html

<span id="login-tag" data-is-login="1"></span>

(5)front/front_pdetail.html

{% extends 'front/front_base.html' %}
{% from 'common/_macros.html' import static %} {% block title %}
{{ post.title }}
{% endblock %} {% block head %}
<script src="{{ static('ueditor/ueditor.config.js') }}"></script>
<script src="{{ static('ueditor/ueditor.all.min.js') }}"></script>
<script src="{{ static('front/js/front_pdetail.js') }}"></script>
<link rel="stylesheet" href="{{ static('front/css/front_pdetail.css') }}">
{% endblock %} {% block body %}
<div class="lg-container">
<div class="post-container">
<h2>{{ post.title }}</h2>
<p class="post-info-group">
<span>发表时间:{{ post.create_time }}</span>
<span>作者:{{ post.author.username }}</span>
<span>版块:{{ post.board.name }}</span>
<span>阅读数:{{ post.read_count }}</span>
<span>评论数:0</span>
</p>
<article class="post-content" id="post-content" data-id="{{ post.id }}">
{{ post.content|safe }}
</article>
</div> <div class="comment-group">
<h4>评论列表:</h4>
<ul class="comment-list-group">
{% for comment in post.comments %}
<li>
<div class="avatar-group">
<img src="{{ comment.author.avatar or static('common/images/logo.jpg') }}" alt="">
</div>
<div class="comment-content">
<p class="author-info">
<span>{{ comment.author.username }}</span>
<span>{{ comment.create_time }}</span>
</p>
<p class="comment-txt">
{{ comment.content|safe }}
</p>
</div>
</li>
{% endfor %} </ul>
</div> <div class="add-comment-group">
<h3>添加评论</h3>
<script id="editor" style="height:100px;" type="text/plain"></script>
<div class="add_comment_btn"> <button class="btn btn-primary" id='comment-btn'>发表评论</button>
</div> </div> </div>
<div class="sm-container"></div>
{% endblock %}

(6)front/css/front_pdetail.css

.comment-group{
border:1px solid #e8e8e8;
margin-top: 20px;
padding: 10px;
}
.add-comment-group{ border:1px solid #e8e8e8;
margin-top: 20px;
}
.add_comment_btn{
text-align: right;
margin: 10px; }
.add-comment-group h3{
margin: 10px;
} .comment-list-group li{
overflow:hidden;
border-bottom:1px solid #e8e8e8; }
.avatar-group{
float:left;
}
.avatar-group img{
width: 50px;
height: 50px;
border-radius: 50%;
}
.comment-content{
float: left;
margin-left: 20px;
}
.comment-content .author-info{
font-size: 12px;
color:#8c8c8c;
}
.author-info span{
margin-right:10px;
}
.comment-content .comment-txt{
margin-top: 10px;
}

(7)front/front_pdetail.js

$(function(){

    var ue=UE.getEditor('editor',{
'serverUrl':'/ueditor/upload/',
"toolbars": [
[
'undo', //撤销
'redo', //重做
'bold', //加粗
'italic', //斜体
'blockquote', //引用
'selectall', //全选
'fontfamily', //字体
'fontsize', //字号
'simpleupload', //单图上传
'emotion' //表情
]
]
});
window.ue=ue;
}); $(function(){
$('#comment-btn').on('click',function(event){
event.preventDefault();
var login_tag=$('#login-tag').attr('data-is-login');
if (! login_tag){
window.location='/signin/'
}else{
var content=window.ue.getContent();
var post_id=$('#post-content').attr('data-id');
zlajax.post({
'url':'/acomment/' ,
'data':{
'content':content,
'post_id':post_id
},
'success':function(data){
if(data['code']==200){
zlalert.alertSuccessToast(msg='评论发表成功');
window.location.reload();
}else{
zlalert.alertInfo(data['message']);
}
}
});
} }) ;
});

BBS论坛(三十)的更多相关文章

  1. BBS论坛(十八)

    18.首页轮播图实现 (1)front/css/front_base.css .main-container{ width: 990px; margin: 0 auto; overflow: hidd ...

  2. BBS论坛(十五)

    15.1.登录界面完成 (1)front/signbase.html {% from 'common/_macros.html' import static %} <!DOCTYPE html& ...

  3. BBS论坛(十九)

    19.1.cms轮播图管理页面布局 (1)cms/cms_base.html <li class="nav-group banner-manage"><a hre ...

  4. BBS论坛(十六)

    16.登录功能完成 (1)front/forms.py class SigninForm(BaseForm): telephone = StringField(validators=[Regexp(r ...

  5. BBS论坛(十四)

    14.1注册完成跳到上一个页面 (1)front/form.py # front/forms.py __author__ = 'derek' from ..forms import BaseForm ...

  6. BBS论坛(十二)

    12.1.图形验证码生成 (1)utils/captcha/init.py import random import string # Image:一个画布 # ImageDraw:一个画笔 # Im ...

  7. BBS论坛(十)

    10.1.客户端权限验证功能完成 (1)cms/cms_profile 显示当前用户的角色和权限 <tr> <td>角色:</td> <td> {% f ...

  8. python第一百三十天 ---简单的BBS论坛

    简单的BBS论坛 实现功能 git仓库地址:https://github.com/uge3/BBS 1.整体参考“抽屉新热榜” + “博客园” 2.实现不同论坛版块 3.帖子列表展示 4.个人博客主页 ...

  9. Python之路【第十八篇】Django小项目简单BBS论坛部分内容知识点

    开发一个简单的BBS论坛 项目需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可被 ...

  10. python 学习笔记二十 django项目bbs论坛

    项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可 ...

随机推荐

  1. 4、Nginx安装与配置

    一.简介 Nginx官网:http://nginx.org/ Nginx(发音同engine x)是一个异步框架的 Web服务器,也可以用作反向代理,负载平衡器 和 HTTP缓存.该软件由 Igor ...

  2. 大数据学习之hdfs集群安装部署04

    1-> 集群的准备工作 1)关闭防火墙(进行远程连接) systemctl stop firewalld systemctl -disable firewalld 2)永久修改设置主机名 vi ...

  3. 修改或添加HTTP请求头

    1.Cookie的修改 (一)cookie长什么样 cookie是一个个键值对(“键=值”的形式)加上分号空格隔开组合而成, 形如: "name1=value1; name2=value2; ...

  4. jenkins里用ansible发布代码常见的问题

    1.stdout: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined cd bin/vi catalina. ...

  5. 《团队作业》五小福团队--UNO的博客链接汇总

    <团队作业>五小福团队--UNO的博客链接汇总 <团队作业第一周>五小福团队作业--UNO <团队作业第二周>五小福团队作业--UNO <团队作业第三.第四周 ...

  6. 极简科普 1:什么是 VOIP

    VoIP 的全称是 Voice over Internet Protocol.简单说,就是用过 IP 网络进行即时的语音/视频通信.注意,这里只强调了在传输过程中有使用 IP 网络,并没有说只通过 I ...

  7. AI零基础入门之人工智能开启新时代—上篇

    人工智能的发展史及应用 开篇:人工智能无处不在 人工智能的发展历程 · 1945艾伦图灵在论文<计算机器不智能>中提出了著名的图灵测试,给人工智能的収展产生了深远的影响. · 1951年, ...

  8. js 原生转json 可以v8中运行

    // load("D:/jsontest.js"); function test1(vvv) { print(vvv); } //把json str 转 json obj func ...

  9. docker之使用System.Drawing生成图片缺少Gdiplus.dll错误

    1.在docker 上找到并运行需要System.Drawing的镜像 然后退出执行另一语句 docker run -it container01 进入镜像以方便安装gdiplus docker ex ...

  10. sass快速入门

    sass十分钟入门 变量 sass中可以定义变量,方便统一修改和维护. //sass style //----------------------------------- $fontStack: H ...