博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
发布功能完成
阅读量:4312 次
发布时间:2019-06-06

本文共 2518 字,大约阅读时间需要 8 分钟。


  • 编写要求登录的装饰器

from functools import wraps

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

@wraps(func)

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

          #要求登录

          return func(*args, ** kwargs)

      return wrapper #返回一个函数

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():

 

@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('index'))

 

  • 建立发布内容的对象关系映射。
class Question(db.Model):
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)    create_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'))

 

  • 完成发布函数。

保存到数据库。

重定向到首页。

 question HTML:

{% extends'myweb.html' %}{% block questiontitle %}提问页面{% endblock %}{% block questionhead %}    
{% endblock %}{% block questiontbody %}
{% endblock %}

py文件:

@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('index'))

运行截图:

 

转载于:https://www.cnblogs.com/yishhaoo/p/7908741.html

你可能感兴趣的文章
POJ 3624 Charm Bracelet
查看>>
ZOJ 2314 Reactor Cooling
查看>>
关于做事的一点想法
查看>>
程序在本地能启动而预发布不能启动
查看>>
Lucene、ES好文章
查看>>
有关定时器setTimeout()、setInterval()详解
查看>>
刷题总结——次小生成树(bzoj1977 最小生成树+倍增)
查看>>
html5-2 html实体和颜色有哪些
查看>>
饺紫猫配色教程
查看>>
第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能...
查看>>
第八十节,CSS3边框图片效果
查看>>
第一百九十五节,jQuery EasyUI,Resizable(调整大小)组件
查看>>
Gym 101128F Landscaping(网络流)题解
查看>>
使用Expression进行查询拼接
查看>>
父页面获得子页面的值
查看>>
elment 中 el-table 进行校验
查看>>
SQL server 动态查询(表名或字段动态),并且获取想得到的返回值结果
查看>>
Nginx配置详解
查看>>
突袭HTML5之WebGL 3D概述(上) - WebGL原生开发
查看>>
SQL 映射的 XML 文件
查看>>