二十四:视图之基于调度方法的类视图的使用
调度方法的视图基于flask.view.MethodView实现,根据请求方法的不同,执行类视图下对应的方法,只要是请求方法都可以定义:get、post、put、delete···
from flask import Flask, render_template, views
app = Flask(__name__)
class LoginView(views.MethodView):
def get(self): # get请求时执行此方法
return '这是get请求的返回值'
def post(self): # post请求时执行此方法
return '这是post请求的返回值'
app.add_url_rule('/login/', view_func=LoginView.as_view('login'))
拿登录来说
from flask import Flask, render_template, views, request
app = Flask(__name__)
class LoginView(views.MethodView):
def get(self, error=None):
return render_template('login.html', error=error)
def post(self):
username = request.form.get('username')
password = request.form.get('password')
return '登录成功' if username == 'user' and password == 'password' else self.get(error='用户名或密码错误')
app.add_url_rule('/login/', view_func=LoginView.as_view('login'))
也可以将渲染模板单独抽离出来
from flask import Flask, render_template, views, request
app = Flask(__name__)
class LoginView(views.MethodView):
def __render(self, error=None):
return render_template('login.html', error=error)
def get(self):
return self.__render()
def post(self):
username = request.form.get('username')
password = request.form.get('password')
return '登录成功' if username == 'user' and password == 'password' else self.__render(error='用户名或密码错误')
app.add_url_rule('/login/', view_func=LoginView.as_view('login'))
讨论群:249728408