基于调度方法的类视图
1. 基于方法的类视图,是根据请求的`method`来执行不同的方法的。如果用户是发送的`get`请求,那么将会执行这个类的`get`方法。如果用户发送的是`post`请求,那么将会执行这个类的`post`方法。其他的method类似,比如`delete`、`put`。
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=="momo" 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'))
html页面
<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">{# <font color="red">{
{ error }}</font>#}{# 优化写法 :判断 #}{% if error %}<font color="red">{
{ error }}</font>{% endif %}</td></tr></table>
</form>