从首页问答标题到问答详情页

    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)

       

posted on 2017-12-07 17:53  欢喜小卢  阅读(96)  评论(0编辑  收藏  举报

导航