Flask框架之基于调度方法的类视图

基于调度方法的类视图

  1. 基于方法的类视图,是根据请求的method来执行不同的方法的。如果用户是发送的get请求,那么将会执行这个类的get方法。如果用户发送的是post请求,那么将会执行这个类的post方法。其他的method类似,比如deleteput

  2. 这种方式,可以让代码更加简洁。所有和get请求相关的代码都放在get方法中,所有和post请求相关的代码都放在post方法中。就不需要跟之前的函数一样,通过request.method == 'GET'

改进前操作

#定义一个基于方法调度的 类视图 
class LoginView(views.MethodView): 
	def get(self): 
		return render_template('login.html') 
	
	def post(self): 
	#模拟实现 
	#拿到前端页面传过来的 账号 和密码 
	#去数据库做查询操作 查询到 (跳转主页面) 
	#反之跳转到login.html页面并给出错误提示信息 
	uname = request.form['uname'] 
	pwd = request.form['pwd'] 

	if uname=="wukong" and pwd =="123": 
		return render_template('index.html') 
	else: 
		return render_template('login.html',error="用户名或者密码错误") 

# 注册类视图 
app.add_url_rule('/login/', view_func=LoginView.as_view('my_login'))


改进后操作1

#改进1 
class LoginView(views.MethodView): 
	def get(self,error=None): 
		return render_template('login.html',error=error) 

	def post(self): 
	#模拟实现 
	#拿到前端页面传过来的 账号 和密码 
	#去数据库做查询操作 查询到 (跳转主页面)
	#反之跳转到login.html页面并给出错误提示信息 
		uname = request.form['uname'] 
		pwd = request.form['pwd'] 
	
		if uname=="wukong" and pwd =="123": 
			return render_template('index.html') 
		else: 
			return self.get(error="用户名或者密码错误") 

# 注册类视图 
app.add_url_rule('/login/', view_func=LoginView.as_view('my_login')) 


<form action="/login/" method="post"> 
	<table> 
		<tr> 
			<td>账号:</td> <td><input type="text" name="uname"></td> 
		</tr> 

		<tr> 
			<td>密码:</td> <td><input type="password" name="pwd"></td> 
		</tr> 

		<tr> 
			<td></td> <td><input type="submit" value="立即登录"></td> 
		</tr> 

		<tr> 
			<td colspan="2"> 
			{% if error %} 
				<font color="red">{{ error }}</font> 
			{% endif %} 
			</td> 
		</tr> 
	</table> 
</form>


改进操作2

通常get()方法处理get请求,post()方法处理post请求为了便于管理,不推荐post方法和get方法互相调用

# 改进2 :基于调度方法的类视图

class LoginView(views.MethodView): 
	def __jump(self,error=None): 
		return render_template('login.html', error=error) 
		
	def get(self,error=None): 
		return self.__jump() 

	def post(self): 
	# 模拟实现 
	#拿到前端页面传过来的 账号 和密码 
	#去数据库做查询操作 查询到 (跳转主页面)
	#反之跳转到login.html页面并给出错误提示信息 
		uname = request.form['uname'] 
		pwd = request.form['pwd'] 

		if uname == "wukong" and pwd == "123": 
			return render_template('index.html') 
		else: 
			return self.__jump(error="用户名或者密码错误") 

# 注册类视图 
app.add_url_rule('/login/', view_func=LoginView.as_view('my_login'))

发布了354 篇原创文章 · 获赞 4 · 访问量 8378
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览