Flask笔记

之前用 Django, 换工作以后公司使用的是Flask, 做一些笔记, 主要是和Django的不同之处


开启debug以后, 开发服务器才会修改代码后自动重启

# -*-coding:utf-8 -*-

from flask import Flask

# 在目录创建一个config.py 配置文件
import config

app = Flask(__name__)
# 设置配置文件config 从 文件中导入
app.config.from_object(config)
# 传递一个参数 __name__
# 1. 方便flask 去寻找资源
# 2. 方便flask插件出现错误的时候, 去寻找错误多所在的位置

@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    # 设置开启debug , 在浏览器里显示。
    # 开启以后修改代码服务器自动重起(django 同样)
    # app.run(debug=True) 一种方法, 不推荐
    app.run()

jinja2用法

  • url_for()函数:

    • 用于url反射, 内部出入视图函数,可以得到视图函数的url路由

      <a href="{{ url_for('.services') }}" >services函数的链接</a>
      
    • 用于引用静态文件 url_for(‘静态路径’, ‘文件名称’)

      {{ url_for('static', filename='main.css') }}
      # 因为flask对静态文件会默认从static文件夹查找, 所以, 可以不写"static"
      <script src="{{ res_url_for('t/jquery/jquery.form.js') }}"></script>
    • 在视图函数内, 可以用于重定向到某个url视图

      return redirect(url_for('重定向函数名'))
      <ul><li>动态路由, 类型转换器int, string, float, path
  • 在模版中访问字典,和django一样,如访问属性,当然, 也可以通过[‘键’]访问
  • for, if 循环和django 一样
  • 过滤器, 和django不同:不是使用冒号, 而是以函数的方式传递参数, func(*arg, **kw)
  • {{ something|default(param) }}
    • 模版继承
    • *

    动态路由

    @app.route('/user/<string:username>', method=['get', 'post'])
    def user(username):
        return "user name is %s" % username
    • 正则表达式路由验证器
    from werkzeug.routing import BaseConverter
    
    class RegexConverter(BaseConverter):
        '''
        设置可以用正则表达式, 来规定动态url的输入规则
        '''
        def __init__(self, url_map, *items):
            super(BaseConverter, self).__init__()
            self.regex = items[0]
    
    # 注册规则验证
    app.url_map.converters['regex'] = RegexConverter

    使用正则, 验证动态url输入是否正确

    @app.route('/reg_user/<regex("\d{3}"):user_id>')
    def reg_user(user_id):
        # user_id 得到的是unicode 对象。
        return 'user_id is %d' % int(user_id)
    • 验证请求方法是post, get, put…
    from flask import request
    在函数中判断:
        if request.method == 'POST':
            pass
    • 写入cookie,
    response = make_response(render_template('index.html', title='主页')
    response.set_cookie('name', '...')
    return response
    • 错误处理函数:
    @app.errorhandler(404)
    def page_not_found():
        return render_response(), 404  # 后面是状态码

    视图函数内的request

    • 从flask 导入request, flask会自动创建request对象
    • 获取表单数据: request.form[‘key’]
    • *

    保存上传文件:永远不要相信客户端发来的文件名

    • from werkzeug.utils import secure_filename
    • f.save(upload_path, secure_filename(f.filename))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值