from flask import Flask, render_template, views, jsonify, url_for
app = Flask(__name__)
def jtwj():
return '个人中心'
class ListView(views.View):
"""
看解释 首先继承于views.View
其次 必须重写dispatch_request()
基本上是返回一个字典
"""
def dispatch_request(self):
return '这是一个类视图'
# def demo(self):
# return '这是测试'
class JsonView(views.View):
def get_resposne(self):
raise NotImplementedError()
def dispatch_request(self):
response = self.get_resposne()
# 返回数据
return jsonify(response)
class ListJsonView(JsonView):
def get_resposne(self):
# 类视图一般是渲染字典
return {'username': 'zhangfan'}
# 这一个视图 第一个参数就是路由的网址 第二个参数就是路由下面的函数
# 映射路由的另一种反射方式
# app.add_url_rule(url_rule,view_func)来进行注册。
app.add_url_rule('/', view_func=jtwj)
app.add_url_rule('/list/', view_func=ListView.as_view('list')) # as_view 为类起名字
# app.add_url_rule('/listjson/', view_func=ListJsonView.as_view('listjson')) # as_view 为类起名字
# 第二种写法
app.add_url_rule('/listjson', endpoint='list1', view_func=ListJsonView.as_view('list'))
# endpoint和as_view作用差不多 两个同时在的时候 endpoint作用级更高
# 因为as.view()改变了类的名字 所以url_for需要写改变后的名字
@app.route('/')
def index():
print(url_for('list1'))
if __name__ == '__main__':
app.run(debug=True, port=8888)