完成评论功能
- 定义评论的视图函数
@app.route('/comment/',methods=['POST'])
def comment():
读取前端页面数据,保存到数据库中@app.route('/comment/',methods=['GET','POST']) @log_re def comment(): if request.method == 'GET': return render_template("detail.html") else: comment = request.form.get('new_comment') ques_id = request.form.get('question.id') author_id = User.query.filter(User.username == session.get('user')).first().id comm = Comment(author_id=author_id,question_id=ques_id,detail=comment) db.session.add(comm) # 保存到数据库 db.session.commit() # 提交 return redirect(url_for('detail',question_id =ques_id))
- 用<input type="hidden" 方法获取前端的"question_id"
- 显示评论次数
- 要求评论前登录
- 尝试实现详情页面下的评论列表显示
{% extends 'base.html' %} {% block title %} 问答详情页 {% endblock %} {% block head %} <link type="text/css" rel="stylesheet" href="../static/css/detail.css"> {% endblock %} {% block main %} <ul class="list"> <div class="page-header"> <h3>{{ ques.title }}<br></h3> <small>{{ ques.author.username }}</small> </div> <p class="answer" style="text-indent: 18px">{{ ques.detail }}</p> <hr> <form action="{{ url_for('comment') }}" method="post"> <span class="badge">{{ ques.creat_time }}</span> <a href="a">回复♥</a> <a href="b">送礼</a> <div> <textarea name="new_comment" class="form-control" rows="3" id="new-comment" placeholder="我也说一句..."></textarea> <input name="question_id" type="hidden" value="{{ ques.id }}" > </div> <button type="submit" class="btn btn-default">发送</button> </form> <div class="pinglunqu"> <h4>评论:({{ ques.comments|length }})</h4><br> <ul class="list1"> {% for ques in ques.comments %} <li class="list2"> <img style="width: 30px" src="{{ url_for('static',filename='../static/images/friends.jpg') }}" > <a href="#">{{ ques.author.username }}</a> <span class="badge">{{ ques.creat_time }}</span><br> <p class="pinglun">评论:{{ ques.detail }}</p><br> </li> {% endfor %} </ul> </div></ul>{% endblock %}