二十四:视图之基于调度方法的类视图的使用

 

调度方法的视图基于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'))
posted @ 2019-11-04 22:40  向前走。  阅读(327)  评论(0编辑  收藏  举报