首页列表显示全部问答,完成问答详情页布局

  1. 首页列表显示全部问答:
    1. 将数据库查询结果传递到前端页面 Question.query.all()
    2. 前端页面循环显示整个列表。
    3. 问答排序
  2. 完成问答详情页布局:
    1. 包含问答的全部信息
    2. 评论区
    3. 以往评论列表显示区。
  3. 在首页点击问答标题,链接到相应详情页。

 

from flask import Flask,render_template,request,redirect,url_for,session                                                                      
from flask_sqlalchemy import SQLAlchemy                                                                                                       
import config                                                                                                                                 
from functools import wraps                                                                                                                   
from  datetime import datetime                                                                                                                
                                                                                                                                              
app = Flask(__name__)                                                                                                                         
app.config.from_object(config)                                                                                                                
db=SQLAlchemy(app)                                                                                                                            
                                                                                                                                              
class User(db.Model):                                                                                                                         
    __tablename__ = 'User'                                                                                                                    
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)                                                                            
    username = db.Column(db.String(20),nullable=False)                                                                                        
    password = db.Column(db.String(20),nullable=False)                                                                                        
    userphone = db.Column(db.String(20),nullable=False)                                                                                       
                                                                                                                                              
class Question(db.Model):                                                                                                                     
    __tablename__ = 'question'                                                                                                                
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)                                                                          
    title = db.Column(db.String(100), nullable=False)                                                                                         
    detail = db.Column(db.Text, nullable=False)                                                                                               
    creat_time = db.Column(db.DateTime, default=datetime.now)                                                                                 
    author_id = db.Column(db.Integer, db.ForeignKey('User.id'))                                                                               
    author = db.relationship('User', backref=db.backref('question'))                                                                          
                                                                                                                                              
db.create_all()                                                                                                                               
                                                                                                                                              
@app.route('/')                                                                                                                               
def zhuye():                                                                                                                                  
    context={                                                                                                                                 
        'questions': Question.query.all()                                                                                                     
    }                                                                                                                                         
    return render_template('zhuye.html',**context)                                                                                            
                                                                                                                                              
@app.route('/detail/')                                                                                                                        
def detail():                                                                                                                                 
    return render_template('detail.html')                                                                                                     
                                                                                                                                              
@app.route('/denglu/',methods=['GET','POST'])                                                                                                 
def denglu():                                                                                                                                 
    if request.method == 'GET':                                                                                                               
        return render_template('denglu.html')                                                                                                 
    else:                                                                                                                                     
        username = request.form.get('username')                                                                                               
        password = request.form.get('password')                                                                                               
        user = User.query.filter(User.username == username).first()                                                                           
        if user:                                                                                                                              
            if user.password == password:                                                                                                     
                session['user'] = username                                                                                                    
                session.permanent = True                                                                                                      
                return redirect(url_for('zhuye'))                                                                                             
            else:                                                                                                                             
                return '密码错误!'                                                                                                                
        else:                                                                                                                                 
            return '不存在该用户名!'                                                                                                                 
                                                                                                                                              
                                                                                                                                              
@app.route('/zhuce/',methods=['GET','POST'])                                                                                                  
def zhuce():                                                                                                                                  
    if request.method == 'GET':                                                                                                               
        return render_template('zhuce.html')                                                                                                  
    else:                                                                                                                                     
        username = request.form.get('username')                                                                                               
        password = request.form.get('password')                                                                                               
        userphone = request.form.get('userphone')                                                                                             
        user = User.query.filter(User.username == username).first()                                                                           
        if user:                                                                                                                              
            return 'username existed.'                                                                                                        
        else:                                                                                                                                 
            user1 = User(username=username, password=password, userphone=userphone,)                                                          
            db.session.add(user1)                                                                                                             
            db.session.commit()                                                                                                               
            return redirect(url_for('denglu'))                                                                                                
                                                                                                                                              
def loginFirst(func):                                                                                                                         
    @wraps(func)                                                                                                                              
    def wrapper(*args, **kwargs):                                                                                                             
        if session.get('user'):                                                                                                               
            return func(*args, **kwargs)                                                                                                      
        else:                                                                                                                                 
            return redirect(url_for('denglu'))                                                                                                
    return wrapper                                                                                                                            
                                                                                                                                              
                                                                                                                                              
@app.route('/question/',methods=['GET','POST'])                                                                                               
@loginFirst                                                                                                                                   
def question():                                                                                                                               
    if request.method == 'GET':                                                                                                               
        return render_template('question.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('zhuye'))                                                                                                     
                                                                                                                                              
@app.context_processor                                                                                                                        
def mycontext():                                                                                                                              
    username=session.get('user')                                                                                                              
    if username:                                                                                                                              
        return {'username':username}                                                                                                          
    else:                                                                                                                                     
        return {}                                                                                                                             
@app.route('/logout/')                                                                                                                        
def logout():                                                                                                                                 
    session.clear()                                                                                                                           
    return redirect(url_for('zhuye'))                                                                                                         
                                                                                                                                              
if __name__ == '__main__':                                                                                                                    
    app.run(debug=True)                                                                                                                       
PY
{% extends 'base.html' %}

{% block title %}Detail{% endblock %}

{% block head %}
    <link href="{{ url_for('static',filename='css/detail.css') }}" rel="stylesheet" type="text/css">
{% endblock %}

{% block main %}
<div class="detail" >
    <h2 align="center">title</h2>
    <a href="#">username</a>
    <span>creat_time</span>
    <div class="p">
        <p>detail</p>
    </div>
    <textarea rows="10">请发表您的评论</textarea><br>
    <button >发表评论</button>
    <br>
    <ul>
        <p>评论</p>
        <li>
            <img src="{{ url_for('static',filename='image/xiaolian.png') }}">
            <a href="#">username</a>
            <span>creat_time</span><br>
            <p>comment</p>
        </li>
        <li>
            <img src="{{ url_for('static',filename='image/xiaolian.png') }}">
            <a href="#">username</a>
            <span>creat_time</span><br>
            <p>comment</p>
        </li>
    </ul>
</div>
{% endblock %}

 

posted @ 2017-12-06 19:14  057吴代祺  阅读(105)  评论(0编辑  收藏  举报