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

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

  • 编写要求登录的装饰器

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

 

def 
loginFirst(func): 
#参数是函数
    
@wraps
(func)
    
def 
wrapper(
*
args, 
*
*
kwargs): 
#定义个函数将其返回
        
if 
session.get(
'user'
):
            
return 
func(
*
args, 
*
*
kwargs)
        
else
:
            
return 
redirect(url_for(
'login'
))
        
# print('call %s():' % func.__name__)
        
# return func(*args, ** kwargs)
    
return 
wrapper 
#返回一个函数
 
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'
))

 

@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/caoxinwen092/p/7908708.html

你可能感兴趣的文章
poj 1222 EXTENDED LIGHTS OUT(位运算+枚举)
查看>>
进程和线程概念及原理
查看>>
Lucene、ES好文章
查看>>
android 生命周期
查看>>
jquery--this
查看>>
MySQL 5.1参考手册
查看>>
TensorFlow安装流程(GPU加速)
查看>>
OpenStack的容器服务体验
查看>>
【BZOJ 4059】 (分治暴力|扫描线+线段树)
查看>>
BZOJ 1066 蜥蜴(网络流)
查看>>
提高批量插入数据的方法
查看>>
Linux重启Mysql命令
查看>>
前端模块化:RequireJS(转)
查看>>
应用程序缓存的应用(摘抄)
查看>>
jQuery基础知识,很赞的!!!
查看>>
JK_Rush关于索引的一些总结
查看>>
[Codevs] 线段树练习5
查看>>
Amazon
查看>>
component-based scene model
查看>>
Echart输出图形
查看>>