美文网首页
学flask的第四天之模板

学flask的第四天之模板

作者: Yznx_请叫我小哥 | 来源:发表于2019-04-01 15:31 被阅读0次
the photo from unsplash

session

session是flask的一个内置对象,我们可以直接使用,但是在使用前我们需要为我们的session设置一个 SECRET_KEY 为了安全。设置方法也很简单:

from flask import seesion
app = Flask(__name__)
app.secret_key = "jlskflsfgsdkfdsflasf"

然后我们可以像是字典那样直接将你想要存储的数据加进去:

@app.route("/login", methods=["POST", "GET"])
def login():
    if request.method == "GET":
        return render_template("login.html")
    elif request.method == "POST":
        username = request.form['username']
        session["username"] = username
        return username

当我们想要取出session中的值也是可以的,推荐使用 session.get() 方法去获取值:

@app.route("/home")
def home():
    username = None
    if session.get("username"):
        username = session.get("username")
    return render_template("home.html", username=username)

如果你想要删除session的话可以使用 session.pop()方法:

@app.route("/logout")
def logout():
    session.pop("username")
    return redirect(url_for("home"))

模板

 模板是flask中比较重要的一个组成部分,flask使用的是 jinjia2模板。我们在前面使用到了模板,其中使用函数 render_template 来渲染模板。
 同时在模板中有很多语法,首先说一下在模板中定义和使用变量的方法:{{ }} 我们用两个双引号来使用变量。{% %} 我们使用这个符号来声明变量。这两个是最基础的,其他都是在这两个上面扩展的。
例如继承语法:

{% block name%}
{% endblock %}

你只需要在父页面中使用block标签将需要子页面来自定义的东西包裹起来,其他的在子页面中都会自动继承父页面。在子页面中只需要这样:

{%extend "xxx.html"%}

如果出现了多重继承的时候还想要保存上一次的效果你需要使用 {{ super()}}来达到目的。
还有判断:

{% if %}
{% elif %}
{% else%}
{%endif%}

还有循环:

{for list in lists}

{endfor}

你还可以使用include标签来将其他HTML文件包含进来:

{% include%}

在jinjia2模板中,标签都是一对
同时在模板中,你可以使拥宏定义来实现你想要实现的功能:

<body>
    {% macro hello() %}
        <h1>你好,世界</h1>
    {% endmacro %}
    {{ hello() }}
效果: image.png

宏定义就像是在python中定义函数一样,同样你是可以在定义的时候传递参数:

<body>
    {% macro hello(name) %}
        <h1>你好,{{ name  }}</h1>
    {% endmacro %}
    {{ hello("flask") }}
</body>
效果: image.png

同时为了开发简单明了,我们可以将所有的宏定义写到一个文件中,在我们需要使用的时候直接引入就好:


宏定义文件
 {% from "login.html" import hello %}
    {{ hello("python") }}
image.png
过滤器
变量可以通过过滤器修改。过滤器通过管道符号(|)与变量分隔,并且可以在括号中包含可选参数。可以链接多个过滤器。一个过滤器的输出应用于下一个过滤器。例如,将从变量名称和title-case中删除所有HTML标记输出{{name|striptags|title }}title(striptags(name))接受参数的过滤器在参数周围有括号,就像函数调用一样。例如:将使用逗号加入列表{{ listx|join(', ') }}str.join(', ', listx)。关于jinjia2的内置过滤器实在是有点多,所以推荐你去看官方文档选择你自己需要的 jinjia2内置过滤器
过滤器还有很多,还可以自己创建过滤器,后面会专门讲一下。

相关文章

  • 学flask的第四天之模板

    session session是flask的一个内置对象,我们可以直接使用,但是在使用前我们需要为我们的sessi...

  • Flask jinja2模板

    Python Flask JIJIA2模板渲染 A.Flask渲染Jinja2模板和模板传参 如何渲染模板:Fla...

  • Flask---迁移数据库实例以及步骤讲解

    #从flask中导入Flask 实例化flask对象 渲染模板from flaskimport Flask,ren...

  • Flask框架学习之jinja2模板

    flask渲染jinja2模板和传参: 1、如何渲染模板: 模板放在“template”文件夹下。 从flask导...

  • Flask 框架(2)-模板

    Flask-模板

  • jinja2

    jinja2是Flask作者开发的一个模板系统,起初是仿django模板的一个模板引擎,为Flask提供模板支持,...

  • Flask - 07 模板

    Flask使用Jinja2 模板,并通过render_template()函数返回模板给客户端 Flask会在te...

  • 《Flask Web开发实战》——模板

    本书第三章Flask之template,对一些内容做个笔记,方便回顾。 1. 模板基本用法 Flash默认的模板引...

  • flask之模板篇

    模板即html文件,在学习本篇之前需要了解下前端知识(js啊,html啊,css啊),当然,够聪明边学边补也是ok...

  • Flask框架之模板

    Jinja2模板引擎简介 模板 在前面的实例中,视图函数的主要作用是生成请求的响应,这是最简单请求.实际上,视图函...

网友评论

      本文标题:学flask的第四天之模板

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