【已解决】Flask渲染模板

本博文源于Flask基础,旨在讲解如何用Flask渲染网页模板

实验效果

在这里插入图片描述

核心思路

flask是利用了Jianjia2模板,只需要知道flask如何调用Jinjia2即可。Flask提拱的render_template函数把Jinjia2模板引擎集成到了程序中,render_template函数第一个参数是模板的文件名。随后的参数就是个键值对,表示模板中变量对应的键值对。这里使用一个例子。

核心代码

在项目中创建templates,文件夹结构如下
在这里插入图片描述
index.html如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
<h1>Welcome to Flask</h1>
</body>
</html>

user.html如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
<h1>Hello,{
   
   {name}}</h1>
</body>
</html>

python核心代码如下

from flask import Flask,render_template

app = Flask(__name__)

# 视图函数
@app.route('/')
def hello_world():
    return render_template('index.html')


@app.route('/user/<username>')
def show_user_profile(username):
    # 显示该用户名的用户信息
    return render_template('user.html',name=username)


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

Jinjia中的变量

刚才使用的变量{ {name}},现在学习一下常用的字典取出值的变量

<p>从字典中取一个值:{
   
   {mydict['key']}}.</p>
<p>从列表中取一个值:{
   
   {mylist[3]}}.</p>
<p>从列表中取一个带索引的值:{
   
   { mylist[myinvar]}}.</p>
<p>从对象的方法中取一个值:{
   
   {myobj.somemethod()}}.</p>

同样也可以用过滤器

Hello,{
   
   {name|capitalize}}

常用过滤器

名称 说明
safe 渲染时不转义
capitalize 把值的首字母转换成大写,其他字母转换成小写
lower 把值转换成小写形式
upper 把值转换成大写形式
title 把值中每个单词的首字母都转换成大写
trim 把值的首尾空格去掉
striptags 渲染之前把值中所有的HTML标签都删掉
safe 渲染时不转义

控制结构

控制结构包括条件控制,循环控制

{% if user %}
Hello, {
   
   {user}}!
{% else %}
Hello,Stranger!
{% endif %}

循环结构

扫描二维码关注公众号,回复: 13270100 查看本文章
<ul>
{% for comment in comments %}
<li>{
   
   { comment }}</li>
{% endfor %}
</ul>

python中的函数

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

导入宏另存为宏

重复使用宏

{% import 'macros.html' as macros %}
<ul>
{% for comment in comments %}
{
   
   { macros.render_comment(comment)}}
{% endfor %}`在这里插入代码片`
</ul>
{% include 'common.html'%}

模板继承

<html>
<head>
{% block head %}
<title>{%block title%}{% endblock %}-My Application </title>
</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 %}

总结

flask作为轻量级框架,挺不错的。

猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/120833931