同一视图函数传入不同的参数
用<>
定义路由的动态参数
@han.route("/name/<describe>", methods=["GET", "POST"])
def first_web(describe):
return "welcome, han!,now {} ".format(describe)
如果没有对参数的数据类型做限定,默认参数是字符串
@han.route("/name/<int:describe>", methods=["GET", "POST"])
def first_web(describe):
return "welcome, han!,now {} ".format(describe)
使用int:
限定,则只有整数可以作为参数传入。
Jinja2模板引擎
在简单的请求中,视图函数主要的作用是生成请求响应。实际上,视图函数有两个作用:处理业务逻辑和返回响应内容。在大型应用中,会使用模板来承担视图函数返回响应内容的任务。
模板是一个包含响应文本的文件,其中的占位符(变量)表示动态部分,告诉模板引擎,其具体的值需要从使用的数据中获取。
使用真实值替换变量,再返回最终得到的字符串,这个过程称为渲染。
Flask是使用Jinja2这个模板引擎来渲染模板。
模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。
模板语言是一种被设计来自动生成文档的简单文本格式。在模板语言中,一般都会把一些变量传给模板,替换模板特定位置上预先定义好的站位变量名。Jinja2是一个被广泛应用的模板引擎,是由python实现的模板语言,是Flask内置的模板语言。
如何返回一个网页(模板)?
返回的网页一般都是一个HTML文件,所有首先要新建一个HTML文件,作为网站的首页。然后在主程序中import函数render_template
来对HTML进行渲染,render_template函数的第一个参数是模板文件名,后面的参数都是键值对,表示模板中变量对应的真实值。
# *-*coding:utf-8*-*
from flask import Flask
from flask import render_template
han = Flask(__name__)
@han.route("/")
def first_web():
return render_template("first_HTML.html")
if __name__ == '__main__':
han.run()
如何给模板填充数据?
其实很简单,用键值对传入参数,然后在HTML文件中用两个花括号来使用这个变量。
在Jinja2中,使用{# #}
进行注释,快捷键Ctrl + /
使用{{ }}
来表示变量名,这种语法叫做变量代码块。
@han.route("/")
def first_web():
url_str = "www.txy.com"
return render_template("first_HTML.html", url_str=url_str)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
这是一个模板<br>
这是一个标签<br>
{{ url_str }}<br>
</body>
</html>
列表、字典都可以传入并使用。
@han.route("/")
def first_web():
url_str = "www.txy.com"
my_list = [1, 2, 3, 4]
my_dict = {"name": "han", "age": 19}
return render_template("first_HTML.html", url_str=url_str,
my_list=my_list, my_dict=my_dict)
<body>
这是一个模板<br>
这是一个标签<br>
{{ url_str }}<br>
{# 列表和字典的取值#}
{{ my_list }}<br>
{{ my_list.2 }}<br>
{{ my_list[2] }}<br>
{{ my_dict }}<br>
{{ my_dict.age }}<br>
{{ my_dict["age"] }}<br>
</body>