005.Flask类视图

一、 标准类视图
 
  
#coding: utf8
from flask import Flask,views,request-----------------------------------------------------------步骤1
import flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
#2.创建要映射到视图的类(必须继承views.View) -------------------------------------------------------步骤2
class LoginView(views.View):
#3.必须实现dispatch_request(self)方法(此方法的任务相当于普通的函数视图)---------------------------步骤3
def dispatch_request(self):
return 'Login page'
 
#4.建立url与视图类的映射 --------------------------------------------------------------------------步骤4
#endpoint: 用来给 `url_for`反转作为名称的。如果没有给 `endpoint`,那么将会使用 `as_view(name)``name`这个参数来作为反转
#view_func:将类视图转换为函数视图
app.add_url_rule('/login/',endpoint='point_end',view_func = LoginView.as_view('ppoint_fun'));
#2.Url_for反转
with app.test_request_context():
print flask.url_for('point_end')
 
 
if __name__ == '__main__':
app.run()
二、 基于调度方法的类视图:
1. 必须继承自`views.MethodView`。2. 实现`get`函数来响应`get`请求的代码。3. 实现`post`函数来响应`post`请求的代码。
 
  
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="post">
<table>
<tbody>
<tr>
<td>用户名</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td></td>
<td><input type="submit"></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>

 
  
@app.route('/')
@login_required
def hello_world():
return 'Hello World!'
# 基于调度(get和post)的类视图
class LoginView(views.MethodView):
def get(self):
return flask.render_template('login.html')
def post(self):
username = flask.request.form.get('username')
password = flask.request.form.get('password')
print 'username:',username
print 'password:', password
return u'登录成功'
app.add_url_rule('/login/',view_func=LoginView.as_view('login'))
if __name__ == '__main__':
app.run(debug=True)
三、为类视图添加自定义装饰器
 
  
#coding: utf8
from flask import Flask,views
import flask
 
app = Flask(__name__)
 
# -----------------自定义的装饰器---------------------
def login_required(func):
 
def decorator(*args,**kwargs):
username = flask.request.args.get('username')
if username and username == 'xt':
return func(*args,**kwargs)
else:
return flask.redirect('login')
 
return decorator
 
# 函数视图
@app.route('/regist/')
@login_required-----------------------装饰器使用方式01
def regist_view():
return 'regist view'
 
 
# 类视图
class ListView(views.View):
 
decorators = [login_required]------装饰器使用方式02
 
def dispatch_request(self):
return 'list page'
 
app.add_url_rule('/list/',endpoint='list',view_func=ListView.as_view('list'))
 
 
if __name__ == '__main__':
app.run(debug=True)
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值