从首页问答标题到问答详情页
- 主PY文件写视图函数,带id参数。
@app.route('/detail/<question_id>')
def detail(question_id):
quest =
return render_template('detail.html', ques = quest) - 首页标题的标签做带参数的链接。
{{ url_for('detail',question_id = foo.id) }} - 在详情页将数据的显示在恰当的位置。
{{ ques.title}}
{{ ques.id }}{{ ques.creat_time }}{{ ques.author.username }}
{{ ques.detail }} -
建立评论的对象关系映射:
class Comment(db.Model):
__tablename__='comment' -
尝试实现发布评论。
class Comment(db.Model): __tablename__ = 'comment' id = db.Column(db.Integer, primary_key=True, autoincrement=True) author_id = db.Column(db.Integer, db.ForeignKey('user.id')) question_id = db.Column(db.Integer, db.ForeignKey('question.id')) create_time = db.Column(db.DateTime, default=datetime.now) detail = db.Column(db.Text, nullable=False) question = db.relationship('Question', backref=db.backref('comment')) author = db.relationship('User', backref=db.backref('comment'))
@app.route('/sywdxq/<question_id>') def sywdxq(question_id): quest = Question.query.filter(Question.id == question_id).first() return render_template("sywdxq.html",ques=quest) 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 @app.route('/sywdxq',methods=['GET','POST']) @loginFirst def sywdxq(): if request.method=='GET': return render_template('sywenda.html') else: title=request.form.get('title') detail=request.form.get('detail') author_id=User.query.filter(User.username==session.get('user')).first().id question = Question(title=title,detail=detail,author_id=author_id) db.session.add(question) # 数据库,添加操作 db.session.commit() return redirect(url_for('sywdxq'))
<div class="page-headr"> <h1>welcome !!!</h1><br> <h3>Title:{{ ques.title }}<br> <small class="ss" >author:{{ ques.author.username }} <br><span class="badge">发布时间:{{ ques.creat_time }}</span></small> </h3> <hr> <p>detail:{{ ques.detail }}</p> <hr> <form action="{{url_for('comment')}}" method="post" style=""> <div class="form-group"> <textarea name="new_comment" class="form-control" rows="5" id="new-comment" placeholder="write your comments" style="width: 800px"></textarea><br> </div> <button type="submit" class="btn btn-default" style="width:100px "> 发送 </button> </form> {# <h4>comment:({{ ques.comments|length }})</h4>#} <ul class="list-group" style="margin: 10px"></ul> </div> </div> <div class="col-md-2 column "></div> {% endblock %}