美文网首页
Flask第一天

Flask第一天

作者: wuhf06 | 来源:发表于2017-01-03 16:01 被阅读0次

    第一步先建一个virtualenv。

    由于我的机器是有多版本的python,所有我要进入到相应的virtrualenv的目录下面去,建立env环境。

    cd c:\Python36\Scripts
    virtualenv.exe D:\virtualenv\Flask
    D:\virtualenv\Flask\Scripts\activate.bat
    

    在virtualenv中安装Flask模块

    pip install Flask
    

    使用pycharm创建一个Flask项目

    使用pycharm创建Flask项目非常简单,如图操作:


    Paste_Image.png

    完成之后就是如图所示

    Paste_Image.png

    进入Debug模式

    app.run(debug=True)
    

    debug模式可以在不重启服务的情况下对页面进行调试,静态页面开发的时候应该会经常用到

    导入模板

    from flask import Flask,render_template
    
    @app.route('/')
    def hello_world():
        return render_template('index.html',title='<h1>Welcome!</h1>')
    

    这样就可以指向模板了,之后title作为向模板传递的参数

    添加两个页面,且在主页中添加超链接

    demo01.py

    @app.route('/services')
    def services():
        return 'Services'
    
    @app.route('/about')
    def about():
        return 'About'
    

    index.html

    <body>
        <h1>{{ title }}</h1>
        <a href="{{ url_for('.services') }}">services</a>
        <a href="{{ url_for('.about') }}">about</a>
    </body>
    

    路由器转换器

    @app.route('/user/<int:user_id>')
    def user(user_id):
        return 'User %d' % user_id
    

    int -整型
    float-浮点数
    path-路径

    仔细观察以下代码,Flask设计很友好

    @app.route('/projects/')
    @app.route('/our-work/')
    def projects():
        return 'The projects page'
    

    官方解释是这个:

     规范的 URL 指向 projects 尾端有一个斜线。 这种感觉很像在文件系统中的文件夹。访问一个结尾不带斜线的 URL 会被 Flask 重定向到带斜线的规范URL去。
    
      当用户访问页面时忘记结尾斜线时,这个行为允许关联的 URL 继续工作, 并且与 Apache 和其它的服务器的行为一致。另外,URL 会保持唯一,有助于避免搜索引擎索引同一个页面两次。
    

    故在项目中都采用带'/'模式。

    为什么构建 URLs 而不是在模版中硬编码?

    这里有三个好的理由:
    反向构建通常比硬编码更具备描述性。更重要的是,它允许你一次性修改 URL, 而不是到处找 URL 修改。
    构建 URL 能够显式地处理特殊字符和 Unicode 转义,因此你不必去处理这些。
    如果你的应用不在 URL 根目录下(比如,在 /myapplication而不在 /), url_for()将会适当地替你处理好。

    Flask 请求上下文与响应make_response

    make_response可以定制response的高级内容,例如cookie

    from flask import make_response
    @app.route('/')
    def hello_world():
        response = make_response(render_template('index.html', title='Welcome!'))
        response.set_cookie('username','')
        return response
    

    Flask-Script,livereload模块使用

    Flask-Script 项目重构的时候经常用到
    livereload 没啥用,就是写静态文件的时候方便一点,自动刷新,不过好像要加一个chrome插件,没配成功,懒得弄。

    相关文章

      网友评论

          本文标题:Flask第一天

          本文链接:https://www.haomeiwen.com/subject/rywmvttx.html