完成评论功能

1.定义评论的视图函数
    @app.route('/comment/',methods=['POST'])
    def comment():
    读取前端页面数据,保存到数据库中

@app.route('/comment/', methods=['GET','POST'])
@loginFirst
def comment():
    comment = request.form.get('new_comment')
    ques_id = request.form.get('question_id')
    auth_id = User.query.filter(User.username == session.get('user')).first().id
    comm = Comment(author_id = auth_id, question_id = ques_id, detail=comment)
    db.session.add(comm)
    db.session.commit()
    return redirect(url_for('detail'))

2.用<input type="hidden" 方法获取前端的"question_id" 

3.显示评论次数

{% extends 'base.html' %}
{% block title %}问答详情{% endblock %}
{% block main %}
<div class="page-header">
<h3>题目:{{ ques.title }}<br><small>作者:{{ ques.author }} 发布时间:{{ ques.create_time }}</small></h3>
</div>
<p class="lead">detail{{ ques.detail }}</p>
<hr>
<form action="{{ url_for('question') }}" method="post">
<div class="form-group">
<textarea name="new_comment" class="form-control" rows="3" id="new_comment" placeholder="write your comment"></textarea>
    <input type="hidden" name="questions_id" value="{{ questions.id }}">
</div>
<button type="submit" class="btn btn-default">发送</button>
<h4>评论({{ questions.comments|length }})</h4>
</form>
<ul class="list-group" style="margin: 10px"></ul>

{% endblock %}

4.要求评论前登录

def loginFirst(func):
    @wraps(func)
    def wrapper(*args,**kwargs):
        if session.get('user'):
            return func(*args,**kwargs)
        else:
            return redirect(url_for('login'))
    return wrapper

5.尝试实现详情页面下的评论列表显示

<ul class="list-group">
{% for foo in questions %}
    <li class="list-group-item">
        <span class="glyphicon glyphicon-leaf" aria-hidden="true"></span>
        <a href="#">{{ foo.author.username }}</a>
        <br>
        <a href="{{ url_for('detail',question_id=foo.id) }}">{{ foo.title }}</a>
        <span class="badge">{{ foo.creat_time }}</span>
        <p style="color:black">{{ foo.detail }}</p>
    </li>
{% endfor %}
</ul>

 

posted @ 2017-12-08 17:12  004熊锋阳  阅读(176)  评论(0编辑  收藏  举报