flask框架基础笔记

65 阅读3分钟

第一个flask程序讲解:

  1. 第一次创建项目的时候,要添加flask的虚拟环境。添加虚拟环境的时候,一定要选择到python这个执行文件。
    比如你的flask的虚拟环境的目录在/User/Virtualenv/flask-env/bin/python。

  2. flask程序代码的详细解释:

    Copy
    # 从flask这个框架中导入Flask这个类
    from flask import Flask
    
    # 初始化一个Flask对象
    # Flaks()
    # 需要传递一个参数__name__
    # 1. 方便flask框架去寻找资源
    # 2. 方便flask插件比如Flask-Sqlalchemy出现错误的时候,好去寻找问题所在的位置
    app = Flask(__name__)
    

    @app.route是一个装饰器

    @开头,并且在函数的上面,说明是装饰器

    这个装饰器的作用,是做一个url与视图函数的映射

    127.0.0.1:5000/ -> 去请求hello_world这个函数,然后将结果返回给浏览器

    @app.route('/')
    def hello_world():
    return '我是第一个flask程序'

    如果当前这个文件是作为入口程序运行,那么就执行app.run()

    if name == 'main':

    app.run()

    启动一个应用服务器,来接受用户的请求

    while True:

    listen()

    app.run()

    Copy
    

设置debug模式:

  1. 在app.run()中传入一个关键字参数debug,app.run(debug=True),就设置当前项目为debug模式。

  2. debug模式的两大功能:

    • 当程序出现问题的时候,可以在页面中看到错误信息和出错的位置。
    • 只要修改了项目中的python文件,程序会自动加载,不需要手动重新启动服务器。

使用配置文件:

  1. 新建一个config.py文件

  2. 在主app文件中导入这个文件,并且配置到app中,示例代码如下:

    Copy
    import config
    app.config.from_object(config)
    
  3. 还有许多的其他参数,都是放在这个配置文件中,比如SECRET_KEYSQLALCHEMY这些配置,都是在这个文件中。

url传参数:

  1. 参数的作用:可以在相同的URL,但是指定不同的参数,来加载不同的数据。

  2. 在flask中如何使用参数:

    Copy
    @app.route('/article/<id>')
    def article(id):
        return u'您请求的参数是:%s' % id
    
    • 参数需要放在两个尖括号中。
    • 视图函数中需要放和url中的参数同名的参数。

反转URL:

  1. 什么叫做反转URL:从视图函数到url的转换叫做反转url

  2. 反转url的用处:

    • 在页面重定向的时候,会使用url反转。
    • 在模板中,也会使用url反转。

页面跳转和重定向:

  1. 用处:在用户访问一些需要登录的页面的时候,如果用户没有登录,那么可以让她重定向到登录页面。

  2. 代码实现:

    Copy
    from flask import redirect,url
    redirect(url_for('login'))
    

url链接:使用url_for(视图函数名称)可以反转成url。

加载静态文件:

  1. 语法:url_for('static',filename='路径')

  2. 静态文件,flask会从static文件夹中开始寻找,所以不需要再写static这个路径了。

  3. 可以加载css文件,可以加载js文件,还有image文件。

    Copy
    第一个:加载css文件
    <link rel="stylesheet" href="{{ url_for('static',filename='css/index.css') }}">
    第二个:加载js文件
    <script src="{{ url_for('static',filename='js/index.js') }}"></script>
    第三个:加载图片文件
    <img src="{{ url_for('static',filename='images/zhiliao.png') }}" alt="">
    

get请求和post请求:

  1. get请求:

    • 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求。
    • 传参:get请求传参是放在url中,并且是通过?的形式来指定key和value的。
  2. post请求:

    • 使用场景:如果要对服务器产生影响,那么使用post请求。
    • 传参:post请求传参不是放在url中,是通过form data的形式发送给服务器的。

get和post请求获取参数:

  1. get请求是通过flask.request.args来获取。

  2. post请求是通过flask.request.form来获取。

  3. post请求在模板中要注意几点:

    • input标签中,要写name来标识这个value的key,方便后台获取。
    • 在写form表单的时候,要指定method='post',并且要指定action='/login/'
  4. 示例代码:

    Copy
        <form action="{{ url_for('login') }}" method="post">
            <table>
                <tbody>
                    <tr>
                        <td>用户名:</td>
                        <td><input type="text" placeholder="请输入用户名" name="username"></td>
                    </tr>
                    <tr>
                        <td>密码:</td>
                        <td><input type="text" placeholder="请输入密码" name="password"></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td><input type="submit" value="登录"></td>
                    </tr>
                </tbody>
            </table>
        </form>