Python3 Flask框架学习笔记(二)

概要:本章主要记录Flask框架中的模板、静态文件和Cookie的操作

一、模板
Flask视图函数的主要作用是对HTTP请求响应内容,当响应页面时,如果通过字符串方式转义拼接页面内容,可能会导致不必要和未知的错误,因此可以采用模板引擎。

Flask使用jinga2模板引擎,尝试在templates文件夹中找到HTML文件并返回。主要通过下列函数实现:

flask.render_template(template_name_or_list, context)

参数:

  • template_name_or_list: 模板名称
  • context – 需要传递给模板的参数

简单示例:

from flask import Flask
from flask import render_template

app = Flask(__name__)


@app.route('/study/<username>', methods=['GET'])
def sayhello(username):
    return render_template('Hello.html', username=username)


if __name__ == '__main__':
    app.run()

响应页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
    {% if  username =='admin' %}
    <p>Hello, {{ username }}</p>
    {% else %}
    <p>{{ username }}, Permission denied </p>
    {% endif %}
</body>
</html>

浏览器访问:http://127.0.0.1:5000/study/wangwu
输出结果:

wangwu, Permission denied

浏览器访问:http://127.0.0.1:5000/study/admin
输出结果:

Hello, admin

Jinja2模板引擎使用以下分隔符从HTML转义

  • {% … %}: 用于语句
  • {{ … }} :用于表达式可以打印到模板输出
  • {# … #} : 用于未包含在模板输出中的注释
  • # … ## :用于行语句

二、静态文件
Web应用程序通常需要静态文件,例如js文件或css文件。通常这些文件是从static文件夹中提供。

示例:(对上述HTML文件稍加修改)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
    <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename = 'hello.css') }}">
</head>
<body>
    {% if  username =='admin' %}
    <p>Hello, {{ username }}</p>
    {% else %}
    <p>{{ username }}, Permission denied </p>
    {% endif %}
</body>
</html>

在工程的static目录下新建文件hello.css

p{
    font-size: 60px;
    color: blue;
}

当访问连接后即可发现样式已修改,js 文件类似引入即可。

三、Cookie操作
是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息

Flask中主要通过Request对象操作Cookie,示例如下:

from flask import Flask
from flask import render_template
from flask import make_response
from flask import request

app = Flask(__name__)


@app.route('/study/<username>', methods=['GET'])
def sayhello(username):
	# 通过make_response函数获得flask.wrappers.Response对象
    resp = make_response(render_template('Hello.html', username=username))
    # 通过Response对象设置cookie
    resp.set_cookie('username', username)
    return resp


@app.route('/study/cookie')
def getcookie():
	# 通过request.cookies函数获取cookies字典,然后获取指定的数据即可
    return request.cookies.get('username')


if __name__ == '__main__':
    app.run()

测试:
浏览器访问: http://127.0.0.1:5000/study/admin 和 http://127.0.0.1:5000/study/cookie
返回:admin

通过F12即可查看请求头中的cookies

发布了40 篇原创文章 · 获赞 31 · 访问量 62万+

猜你喜欢

转载自blog.csdn.net/weixin_38422258/article/details/104502137