10、Flask实战第10天:视图使用装饰器
在实际开发中,我们有时候会用到自己定义装饰器并应用到函数视图或者类视图里面:
比如:我们要想进入个人中心页面,首先要验证你是否登录,否则进不去,下面我们来模拟这个场景
定义一个装饰器
from functools import wraps
...
def login_required(func):
@wraps(func) #保持原来函数的特性
def wrapper(*args, **kwargs ):
# /setting/?username=heboan
username = request.args.get('username')
if username and username == 'heboan':
return func(*args, **kwargs)
else:
return '请先登录'
return wrapper
函数视图应用自定义装饰器
@app.route('/lprofile/')
@login_required     #这个必须放在@app,route装饰器下面
def profile():
    return render_template('profile.html')
类视图应用自定义装饰器
class ProfileView(views.View):
decorators = [login_required]
def dispatch_request(self):
return render_template('profile.html') app.add_url_rule('/profile/', view_func=ProfileView.as_view('profile'))
10、Flask实战第10天:视图使用装饰器的更多相关文章
- Django中类视图使用装饰器的方式
		
类视图使用装饰器 为类视图添加装饰器,可以使用两种方法. 为了理解方便,我们先来定义一个为函数视图准备的装饰器(在设计装饰器时基本都以函数视图作为考虑的被装饰对象),及一个要被装饰的类视图. def ...
 - Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request对象方法,属性和Response对象,form表单的上传
		
Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request请求对象方法,属性和Response响应对象,form表单的上传 一丶CBV和FBV 在Django中存 ...
 - Django:(05)类视图,装饰器和中间件
		
一.类视图的定义和使用 在Django中还可以通过类来定义一个视图,称为类视图. 定义一个类视图:定义一个类,需继承 Django 提供的 View 类 . from django.views.gen ...
 - django类视图的装饰器验证
		
django类视图的装饰器验证 django类视图的get和post方法是由View内部调用dispatch方法来分发,最后调用as_view来完成一个视图的流程. 函数视图可以直接使用对应的装饰器 ...
 - Flask框架视图多层装饰器问题
		
Flask中的app.route装饰器 我们知道,在flask框架中,我们的路由匹配就是通过有参装饰器来实现的,我们看一个简单的例子: from flask import Flask, render_ ...
 - python全栈开发day111-flask路由及其参数,Flask配置,蓝图,几个装饰器、闪现、send_file、jsonify
		
1.endpoint参数,解决视图函数重名问题(包括装饰后重名问题) http://www.cnblogs.com/eric-nirnava/p/endpoint.html 每个应用程序app都有一个 ...
 - flask实战-个人博客-视图函数
		
视图函数 在上面我们创建了所有必须的模型类.模板文件和表单类.经过程序规划和设计后,我们可以创建大部分视图函数.这些视图函数暂时没有实现具体功能,仅渲染对应的模板,或是重定向到其他视图.以blog蓝本 ...
 - Django基础之给视图加装饰器
		
1. 使用装饰器装饰FBV FBV本身就是一个函数,所以和给普通的函数加装饰器无差: def wrapper(func): def inner(*args, **kwargs): start_time ...
 - Django-给视图加装饰器
		
给FBV加装饰器 FBV:function based view FBV本身就是一个函数,所以跟普通函数加装饰器是一样的 # 装饰函数是要在APP文件中定义,本例是在app01\templatetag ...
 
随机推荐
- Flash by sshockwave [树dp]
			
题目 给定一棵树,每个点有一个活动时间,长度为正整数$t_i$ 你需要安排每个点的活动时间什么时候开始什么时候结束,并且满足:任何一个时刻没有两个相邻的点都在活动 开始时刻为0,在以上条件下最小化所有 ...
 - C++——OOP面向对象理解
			
从Rob Pike 的 Google+上的一个推看到了一篇叫<Understanding Object Oriented Programming>的文章,我先把这篇文章简述一下,然后再说说 ...
 - Fragmenttabhost的使用教程
			
1.准备tab的图标,放到mipmap目录下面,大小64x64,准备2种,一种是选中的,一种是未选中的,如下图 2.重写fragmentabhost,防止调用fragment每次点击tab都要重新调用 ...
 - Saruman’s Level Up~(多校赛算组合数)
			
Description Saruman’s army of orcs and other dark minions continuously mine and harvest lumber out o ...
 - js中连写两个?:三元运算符语法解释
			
在angular 源码中有连写两个三元运算符的代码: var hash = isString(hash) ? hash : isNumber(hash) ? hash.toString() :$loc ...
 - bzoj 2304 [Apio2011]寻路  Dij+模拟+恶心建图
			
[Apio2011]寻路 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 624 Solved: 193[Submit][Status][Discus ...
 - 2017南宁现场赛E The Champion
			
Bob is attending a chess competition. Now the competition is in the knockout phase. There are 2^r2r ...
 - php多虚拟主机配置
			
一.配置httpd.conf# Virtual hosts#Include conf/extra/httpd-vhosts.conf //取消这一行的# 二.配置httpd-vhosts. ...
 - 【poj3693-重复次数最多的连续重复子串】后缀数组
			
题意:给定一个串,长度<=10^5,求它重复次数最多的连续重复子串(输出字典序最小的那个). 例如ccabcabc,答案就是abcabc 一开始没想清楚,结果调了好久. 原理: 按照L划分,因为 ...
 - 关于C++随机函数
			
#include<iostream> #include<cstdlib> #include<ctime> using namespace std; int main ...