Flask逻辑——视图高级与蓝图


技巧:pycharm解决端口被占用的问题:不要同时运行多个py文件
清除页面缓存:ctrl+shift+r

一、标准类视图

作用:
1、大大减少了路由的书写
2、可以继承父类的许多方法,减少代码冗余

模板

  • 需要在flask中导入views基类
标准类视图是继承自flask.views.View,并且在子类中必须实现dispatch_request方法,这个方法类似于视图函数,也要返回一个基于Response或者其子类的对象
from flask import Flask,url_for,views,jsonify

class firstView(views.View):
    def dispatch_request(self):
        return '这是在做一个测试,通过啦!(这是类视图)'

# 类视图通过add_url_rule方法和url作映射
app.add_url_rule('/first/',view_func=firstView.as_view('first'))

案例

# 导入flask 导入views:类视图的父类   导入jsonify:返回json数据(json就是前后端交互的数据,后端给前端)
from flask import Flask,url_for,views,jsonify

# 创建flask的实例对象
app = Flask(__name__)

# 视图函数
@app.route('/')
def index():
    # print(url_for('genren'))  # 更改url的地址 /profile/
    return '首页'

# @app.route('/profile/')
def profile2():
    return '个人中心'



# 类视图 导入包views 继承父类views.View
# 一定要重写父类,加上dispatch_request,否则会报错
# 而且在父类中return值!
class ListView(views.View):
    def dispatch_request(self):
        return '这是在做一个测试,通过啦!(这是类视图)'
    # def demo(self):
    #     return '这是做一个测试'

# 模拟抛出异常的方式 get_reponse
# 继承views.View get_response可以被子重写 抛出异常
class JsonView(views.View):
    def get_response(self):
        raise NotImplementedError

    def dispatch_request(self):
        response = self.get_response()
        return jsonify(response)
# 继承JsonView 重写 get_response
class ListJsonView(JsonView):
    def get_response(self):
        return {
   'username':'xiaohuahua'}

# 以下add_url_rule方法,也可以映射视图函数  endpoint 将原url中profile的名该别名为genren 不过默认为其路由本身
# 注意要写在视图、类视图的下面
app.add_url_rule('/profile/',view_func=profile2,endpoint='genren')
app.add_url_rule('/list/',endpoint='list',view_func=ListView.as_view('list'))
app.add_url_rule('/listjson/',view_func=ListJsonView.as_view('listjson'
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值