zoukankan      html  css  js  c++  java
  • 从首页问答标题到问答详情页

      1. 主PY文件写视图函数,带id参数。 
        @app.route('/detail/<question_id>')
        def detail(question_id):
            quest = 
            return render_template('detail.html', ques = quest) 
      2. 首页标题的标签做带参数的链接。
              {{ url_for('detail',question_id = foo.id) }}

      3. 在详情页将数据的显示在恰当的位置。 
        {{ ques.title}}
        {{ ques.id  }}{{  ques.creat_time }}
        {{ ques.author.username }} 
        {{ ques.detail }}
      4. 建立评论的对象关系映射:

        class Comment(db.Model):
            __tablename__='comment'

      5.  尝试实现发布评论。

      6. {% extends 'base.html' %}
        {%  block title %}问答详情{% endblock %}
        {% block main %}
        <div class="page-header">
            <h3>{{ ques.title }}<br><small>{{ ques.author.username }} <span class="badge">{{ ques.creat_time }}</span> </small></h3>
        
        </div>
        <p class="lead">{{ ques.detail }}</p>
        <hr>
        <form action="{{ url_for('comment') }}" method="post" style="..."...></form>
        <h4>评论:({{ ques.comments|length }}</h4>
        
        <ul class="list-group" style=""></ul>
        {%  endblock %}
        {% extends 'detail.html' %}
        {% block title %}首页{% endblock %}
        
        {% block main %}
            <img sr="{{ url_for('staic',filename='images/qalogo.png') }}" alt="qa">
            <ul class="list-group" style="....">
            {% for foo in question %}
                <li class="list-group-items">
                <span class="glyphicon glyphicon-leaf" aria-hidden="="true></span>
                <a href="{{ ('detail',question_id =foo.id) }}">{{ foo.title }}</a>
                <p style="">{{ foo.detail }}</p>
                <span class="glyphicon glyphicon-user" aria-hidden="true"></span>
                <a href="{{ url_for('usercenter',user_id=foo.author_id) }}">{{ foo.author.username }}评论:({{ foo.comments|length }})</a>
                <span class="badge">{{ foo.creat_time }}</span>
        
                </li>
            {% endfor %}
        
            </ul>
        
        {% endblock %}
        from flask import Flask,render_template,request,redirect,url_for,session
        from flask import Flask
        from flask_sqlalchemy import SQLAlchemy
        import config
        from functools import wraps
        from datetime import datetime
        
        app = Flask(__name__)
        #app.config['SECRET_KEY'] = '1234567'
        app.config.from_object(config)
        db = SQLAlchemy(app)
        
        class User(db.Model):
            __tablename__ = 'user_test'
            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)
            nickname = db.Column(db.String(20))
            tel = db.Column(db.String(20))
        
        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_test.id'))
            author = db.relationship('User',backref=db.backref('question'))
        
        #db.create_all()
        
        
        #user = User(username = 'mis1',password = '124', nickname='wk')
        #db.session.add(user)
        #db.session.commit()
        
        
        
        #user = User.query.filter(User.username == 'mis1234').first()
        #print(user)
        #print(user.id,user.username)
        
        
        #user = User.query.filter(User.username == 'mis1234').first()
        #user.password = '123'
        #db.session.commit()
        
        
        # user = User(username = 'wkkkkkk',password = '123456', nickname='kk')
        # db.session.add(user)
        # db.session.commit()
        
        
        #user = User.query.filter(User.username == 'mis1234').first()
        #db.session.delete(user)
        #db.session.commit()
        
        @app.route()
        
        
        @app.route('/')
        def index():
            context={
                'questions':Question.query.all()
            }
            return render_template('index.html',**context)
        
        
        @app.route('/detail/<question_id>')
        def detail(question_id):
            return render_template('detail.html',ques = question_id)
        
        
        
        
        
        
        
        @app.route('/login/',methods=['GET','POST'])
        def login():
            if request.method == 'GET':
                return render_template('login.html')
            else:
                usern = request.form.get('uname')
                passw = request.form.get('upass')
                user = User.query.filter(User.username==usern).first()
                if user:
                    if user.password == passw:
                        session['user'] = usern;
                        return redirect(url_for('index'))
                    else:
                        return 'password error!'
                else:
                    return 'username is not exister!'
        
        
        
        @app.route('/register/',methods=['GET','POST'])
        def register():
            if request.method =='GET':
                return  render_template('register.html')
            else:
                usern = request.form.get('uname')
                teln = request.form.get('number')
                passw = request.form.get('upass')
                user = User.query.filter(User.username==usern).first()
                if user:
                    return 'username existed'
                else:
                    user1= User(username=usern,tel=teln,password=passw)
                    db.session.add(user1)
                    db.session.commit()
                    return redirect(url_for('login'))
        
        
        @app.context_processor
        def mycontext():
            usern = session.get('user')
            if usern:
                return{'username':usern}
            else:
                return {}
        
        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('/question/',methods=['GET','POST'])
        @loginFirst
        def question():
            if request.method =='GET':
                return  render_template('question.html')
            else:
                biaoti = request.form.get('biaoti')
                detail = request.form.get('detail')
                author_id = User.query.filter(User.username==session.get('user')).first().id
                question = Question(title=biaoti,detail=detail,author_id=author_id)
        
                db.session.add(question)
                db.session.commit()
            return redirect(url_for('index'))
        
        @app.route('/detail/<question_id>')
        def detail(question_id):
            quest=Question.query.filter(Question.id==question_id).first()
            return  render_template('detail.html',ques=quest)
        
        if __name__ == '__main__':
            app.run(debug=True)
  • 相关阅读:
    容器字段FieldContainer
    时间选择框
    Java 异常处理的优劣
    RSA 公钥加密算法
    Java 添加播放MIDI音乐
    Java 内存查看与分析
    总结 Eclipse 编程常用的快捷键
    Java 基础【03】序列化和反序列化
    找出给定字符串中出现最多的字符和次数
    Javascript 限制文本字节数
  • 原文地址:https://www.cnblogs.com/123hyf/p/7992947.html
Copyright © 2011-2022 走看看