zoukankan      html  css  js  c++  java
  • 发布功能完成。

    • 编写要求登录的装饰器

    from functools import wraps

    def loginFirst(func): #参数是函数

    @wraps(func)

          def wrapper(*args, ** kwargs): #定义个函数将其返回

              #要求登录

              return func(*args, ** kwargs)

          return wrapper #返回一个函数

    • 应用装饰器,要求在发布前进行登录,登录后可发布。
    @app.route('/question/',methods=['GET','POST'])
    @loginFirst
    def question():
    • 建立发布内容的对象关系映射。
    class Question(db.Model):
    • 完成发布函数。

    保存到数据库。

    重定向到首页。

    反馈HTML:

    {% extends 'dh.html' %}
    {% block title %}
       反馈页面
    {% endblock  %}
    {% block head %}
            <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='../static/css/fk.css') }}">
    {% endblock  %}
    {% block main %}
    <div class="question-feedback">
    <h2> 问题反馈 </h2>
    <form action="{{ url_for('fk') }}" method="post" >
       <div class="question-control">
           <div>
                <label for="question">问题:</label>
                <br>
                <textarea class="form-control" rows="6" id="questionTitle" placeholder="请输入问题"
                          style="height: 50px" name="title" ></textarea>
            </div>
           <div>
                <label for="questionDetail">详情:</label>
                <br>
                <textarea class="form-control" rows="6" id="questionDetail" placeholder="请描述详细情况"
                          style="height: 130px" name="detail"></textarea>
           </div>
           <input type="checkbox" id="c1">发布问题反馈<br>
       </div>
        <div class="submit-button">
           <br>
           <button type="submit" style="float:right" id="submit-button">提交</button>
        </div>
    </form>
    </div>
    {% endblock  %}

    主py文件:

    from flask import Flask,request,render_template,redirect,url_for,session
    from flask_sqlalchemy import SQLAlchemy
    from datetime import datetime
    from functools import wraps
    import config
    
    app = Flask(__name__)
    app.config.from_object(config)
    db = SQLAlchemy(app)
    
    class User(db.Model):
        __tablename__='user'
        id = db.Column(db.Integer,primary_key=TabError,autoincrement=True)
        username = db.Column(db.String(20),nullable=False)
        password = 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()
    
    # #增加
    # user = User(username='123456',password = '456789')
    # db.session.add(user)
    # db.session.commit()
    #
    # #查询
    # user =User.query.filter(User.username =='abcdef').first()
    # print(user.username,user.password)
    #
    # #修改
    # user =User.query.filter(User.username =='123456').first()
    # user.password='abcdef'
    # print(user.username,user.password)
    # db.session.commit()
    #
    # #删除
    # user =User.query.filter(User.username =='123456').first()
    # print(user.username,user.password)
    # db.session.delete(user)
    # db.session.commit()
    
    @app.route('/')
    def dh():
        return render_template('dh.html')
    
    @app.route('/sy/')
    def sy():
        return render_template('sy.html')
    
    
    @app.route('/dl/',methods=['GET','POST'])
    def dl():
        if request.method == 'GET':
            return render_template("dl.html")
        else:
            usern = request.form.get('name')
            password = request.form.get('password')
            user = User.query.filter(User.username == usern).first()
            if user:
                if user.password == password:
                    session['user'] = usern
                    return redirect(url_for('dh'))
                else:
                    return '密码错误(〃>皿<)'
            else:
                return '用户不存在┌(。Д。)┐'
    
    @app.context_processor
    def mycontext():
        usern=session.get('user')
        if usern:
            return {'username':usern}
        else:
            return{}
    
    @app.route('/zc/',methods=['GET','POST'])
    def zc():
        if request.method == 'GET':
            return render_template("zc.html")
        else:
            usern = request.form.get('name')
            password = request.form.get('password')
            user = User.query.filter(User.username == usern).first()
            if user:
                return '用户名已存在┗|*`0′*|┛ '
            else:
                user1 = User(username=usern, password=password)
                db.session.add(user1)
                db.session.commit()
                return redirect(url_for('dl'))
    
    @app.route('/tc/')
    def tc():
        session.clear();
        return redirect(url_for('sy'))
    
    def loginFirst(func):
        @wraps(func)
        def wrapper(*args,**kwargs):
            if session.get('user'):
                return func(*args,**kwargs)
            else:
                return redirect(url_for('dl'))
        return wrapper
    
    @app.route('/fk/',methods=['GET','POST'])
    @loginFirst
    def fk():
        if request.method == 'GET':
            return render_template('fk.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('sy'))
    
    
    if __name__ == '__main__':
        app.run(debug=True)

  • 相关阅读:
    bzoj1711: [Usaco2007 Open]Dining吃饭
    bzoj1036: [ZJOI2008]树的统计Count
    bzoj1497: [NOI2006]最大获利
    bzoj2561: 最小生成树
    BZOJ 2083: [Poi2010]Intelligence test( )
    BZOJ 2212: [Poi2011]Tree Rotations( 线段树 )
    BZOJ 1110: [POI2007]砝码Odw( 贪心 )
    BZOJ 3163: [Heoi2013]Eden的新背包问题( 背包dp )
    BZOJ 1537: [POI2005]Aut- The Bus(dp + BIT)
    BZOJ 2875: [Noi2012]随机数生成器( 矩阵快速幂 )
  • 原文地址:https://www.cnblogs.com/qisq/p/7908885.html
Copyright © 2011-2022 走看看