zoukankan      html  css  js  c++  java
  • flask笔记一

      最近学习flask,由于web开发方面接触的并不是很多,所以看官方文档有点焦头烂额,好多的概念不理解。

     《Flask web 开发》比较基础,先用这本书做个入门

      1、Flask实例化对象用来接收客户端的所有请求。

    from flask import Flask
    app = Flask(__name__)

      2、路由实现URL和python函数之间的映射,应用python中的修饰器。

    @app.route('/')
    def index():
    return '<h1>Hello World!</h1>

        2.1 定义路由中的动态名字,用"<>"。

          @app.route('/user/<name>')
    def user(name):
    return '<h1>Hello, %s!</h1>' % name

        2.2 路由中的动态部分默认为字符串,不过也可以使用其他类型。

          int、float、path类型。

      path 类型也是字符串,但不把斜线视作分隔符,而将其当作动态片段的一部分。

      3、程序实例用run方法启动 Flask 集成的开发 Web 服务器。

    if __name__ == '__main__':
    app.run(debug=True)#debug=true是启动调试模式。

      4、模板与渲染模板

    模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请
    求的上下文中才能知道。使用真实值替换变量,再返回最终得到的响应字符串,这一过程
    称为渲染。为了渲染模板,Flask 使用了一个名为 Jinja2 的强大模板引擎。

      4.1 flask在默认情况下,会在该目录下的templates文件夹中找模板,所以出于规范,需要将模板写到该文件夹中。

      4.2 flask通过render_template()方法将Jinja2渲染模板集成到程序中,render_template 函数的第一个参数是

    模板的文件名。随后的参数都是键值对,表示模板中变量对应的真实值。

      5、Jinja2中涉及到的变量过滤器

      过滤器就是在变量之后,用竖线隔开,给变量添加一些功能。下面是Jinja2中一些常见的过滤器:

          

      6、Jinja2中的控制结构

      条件控制语句

        {%if xxx%}                         {% if user %}

          pass                                   Hello,{{user}}!

        {%else%}       >>>>>        {% else %}

          pass                                    Hello,Stranger!

        {%endif%}                            {% endif %}

      循环语句

        {% for %}                              {% for comment in comments %}

        pass                 >>>>>            {% <li>{{ comment }}</li> %}    

        {% endfor %}                         {% endforr %}

        Jinja2支持宏,类似与python中的函数

        {% macro render_comment(comment) %}
        <li>{{ comment }}</li>
        {% endmacro %}
        <ul>
          {% for comment in comments %}
          {{ render_comment(comment) }}
          {% endfor %}

        </ul>

        上面的例子就相当于python中定义一个render_comment(comment)函数,只是关键字不同,并且加入一个结束标识。

       其中macro为关键字,当宏结束时用endmacro表示。一般情况下,宏都会重复使用,所以将重复使用的代码写入单独的文件,

       为模板的调用提供方便;另一种重复代码使用的方式是模板继承,关键字extends表示继承,如果衍生模板需要继承基模板中的内容,用

       super()方法获取基模板中的内容。下面是继承的小例子:

       基模板  base.html

        <html>
        <head>
        {% block head %}
        <title>{% block title %}{% endblock %} - My Application</title>
        {% endblock %}
        </head>
        <body>
        {% block body %}
        {% endblock %}
        </body>
        </html>


             衍生模板

        {% extends "base.html" %}
        {% block title %}Index{% endblock %}
        {% block head %}
        {{ super() }}
        <style>
        </style>
        {% endblock %}
        {% block body %}
        <h1>Hello, World!</h1>
        {% endblock %}

  • 相关阅读:
    Poj 2391 二分答案+最大流+拆点
    POJ 1087 A Plug for UNIX 最大流
    POJ 1459 Power Network 最大流
    POJ 2112 Optimal Milking 二分答案+最大流
    POJ 1273 Drainage Ditches 最大流
    POJ 1149 PIGS 最大流
    POJ 2288 Islands and Bridges 哈密尔顿路 状态压缩DP
    The Cow Lexicon
    1523. K-inversions
    1350. Canteen
  • 原文地址:https://www.cnblogs.com/xbkp/p/4940115.html
Copyright © 2011-2022 走看看