Flas初学习——第二天

本文详细介绍了如何在Flask应用中使用Jinja2模板语言,包括内置过滤器如`|length`,自定义过滤器如`datetime_format`的使用,以及控制语句、模板继承和静态文件(CSS/JS)的引用。
摘要由CSDN通过智能技术生成

jinja2过滤器的使用

简单来说就是|
直接上代码

from flask import Flask,render_template
from datetime import datetime
app = Flask(__name__)
class User:
    def __init__(self,username,email):
        self.username = username
        self.email = email

def datetime_format(value,format='%Y-%m-%d %H:%M:%S'):
    return value.strftime(format)
app.add_template_filter(datetime_format,"dfomat")

@app.route('/')
def hello_world():  # put application's code here
    user = User(username ='John',email = 'XX@qq.com')
    person = {'username':"张三",'email':"zhangsan@qq.com"}
    return render_template("index.html",user = user,person = person)
@app.route('/fiter')
def fiter():
    user = User(username='John', email='XX@qq.com')
    mytime = datetime.now()
    return render_template("fiter.html",user = user,mytime=mytime)
@app.route('/control')
def control():
    age = 17
    books = [{
        "name" : "三国演义",
        "author" : "罗贯中"
    },
        {
            "name":"水浒传",
            "author":"施耐庵"
        }
    ]
    return render_template('control.html',
                           age = age,books = books)
@app.route('/child1')
def child1():
    return render_template('child1.html')
@app.route('/static')
def staticfile():
    return render_template("static.html")
if __name__ == '__main__':
    app.run()

这是主运行文件写的东西,下面讲分块来解释

对于过滤器来说

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过滤器使用demo</title>
</head>
<body>
<h1>过滤器</h1> 
#h1指一级标题
<div>{{ user.username }}-{{ user.username|length }}</div>
#div是讲内容逐行分开
#这里面的|length就是一种自带的过滤器,可以求长度,如下图那个John-4那个4就是
<div>{{ mytime|dfomat }}</div>
#这个就是自定义的过滤器了,看下面解释
</body>
</html>

来解释一下

自定义过滤器

def datetime_format(value,format='%Y-%m-%d %H:%M:%S'):
#其实也是一种函数,value是那个值,即形参,后面是这个值需要的形式
    return value.strftime(format)
app.add_template_filter(datetime_format,"dfomat")
#这个是取别名的过程,改名为dfomat

控制语句

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>控制demo</title>
</head>
<body>
{% if age>18 %}
#1,跟python区别就是{% %}
#2,要有endXX这个很重要
    <div>您可以进入网吧了</div>}
{% elif age == 18 %}
    <div>您来的挺巧,刚满18岁</div>
{% else  %}
    <div>您未成年,还是好好学习吧</div>
{% endif %}
{% for book in books %}
    <div>{{ book.name }}:{{ book.author }}</div>
{% endfor %}
</body>
</html>

@app.route('/control')
def control():
    age = 17
    books = [{
        "name" : "三国演义",
        "author" : "罗贯中"
    },
        {
            "name":"水浒传",
            "author":"施耐庵"
        }
    ]
    #用了一个字典列表,用来遍历
    return render_template('control.html',
                           age = age,books = books)
 #一定不要忘记传递

呼应

继承模版

这是父模版

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}-{% endblock %}</title>
    #这个{%block %}就是留位置给子模版
</head>
<body>
<ul>
    <li><a href="#">首页</a></li>
	<li><a href="#">新闻</a></li>
	
#在Flask中,这段代码表示一个简单的HTML代码块,用于创建一个无序列表(<ul>),其中包含两个列表项(<li>):
第一个列表项包含一个超链接(<a>),该超链接的href属性为空,即指向当前页面或站点的首页。
第二个列表项也包含一个超链接,其href属性同样为空,指向新闻部分。
    
</ul>
{% block body %}
{% endblock %}
<footer>这是底部的标签</footer>>
#这就是底模标签
</body>
</html>

这是子模版

{% extends "base.html"%}
#{%extends%}就是继承哪个父模版
{% block title %}
    我是子模版
{% endblock %}
{% block body %}
我是子模版的文字
{% endblock %}

css和js文件的运用与实现

静态文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{{ url_for("static",filename = "css/css.css" ) }}">
    #link是引入了css文件,上面基本都是固定格式
    <script src = {{ url_for('static',filename = "js/study.js") }}></script>
    #script是引入了js文件
</head>
<body>
<img src="{{ url_for("static",filename = "R-C.jpg") }}" alt="">
</body>
</html>

css文件

body{
    background-color: pink;
}
#功能是给加一个背景颜色

js文件

alert("我是js文件");
#功能是在进入网站时加入一个对话框

效果如下
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值