IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 基于Flask框架的Web编程——topic3 -> 正文阅读

[Python知识库]基于Flask框架的Web编程——topic3

控制语句

在html中所有控制语句都放在{% … %}中,并且有一个语句{% endxxx %}来进行结束,Jinja 中常用的控制语句有 if/for…in…,现对他们进行讲解:

if语句

if语句和python中的类似,可以使用>,<,<=,>=,==,!=来判断,也通过and,or,not,()来进行逻辑并操作

{% if kenny.sick %}
	Kenny is sick.
{% elif kenny.dead %}
	You killed Kenny!  You bastard!!!
{% else %}
	Kenny looks okay --- so far
{% endif %}

for循环

for循环可以遍历一个序列包括列表、字典、元组。并且可以进行反向遍历

  • 普通遍历
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
  • 遍历字典
<dl>
{% for key, value in my_dict.iteritems() %}
	<dt>{{ key|e }}</dt>
	<dd>{{ value|e }}</dd>
{% endfor %}
</dl>
  • 序列没有值,进入else
<ul>
{% for user in users %}
	<li>{{ user.username|e }}</li>
{% else %}
	<li><em>no users found</em></li>
{% endfor %}
</ul>

include语句

include语句可以把一个模板引入到另一个模板中,类似于把一个模板的代码copy到另一个模板的指定位置

{% include 'header.html' %}
	主体内容
{% include 'footer.html' %}

#赋值(set)语句

想在模板中添加变量,赋值语句set就派上用场了

{% set name = 'nini' %}

那么以后就可以使用name 来代替nini 这个值了,同时,也可以给他赋值为列表和元组:

{% set navigation = [('index.html','Index'),('about.html','About')] %}

with语句

如果不想让一个变量污染全局环境,可以使用with语句来创建一个内部的作用域,将 set语句放在其中,这样创建的变量只在 with代码块中才有效

{% with %}
	{% set foo =42 %}
	{{  foo }}     foo is 42 here
{% endwith %}

也可在with 的后面直接添加变量,比如

{% with foo = 42 %}
    {{ foo }}
{% endwith %}

模板继承

Flask中的模板可以继承,通过继承可以把模板中许多重复出现的元素抽取出来,放在父模板中,并且父模板通过定义block给子模板开一个口,子模板根据需要,再实现这个block,假设现在有一个base.html 这个父模板

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" href="base.css" />
    <title>{% block title %}{% endblock %}</title>
    {% block head %}{% endblock %}
</head>
<body>
    <div id="body">{% block body %}{% endblock %}</div>
    <div id="footer">
        {% block footer %}
        &copy; Copyright 2008 by <a href="http://domain.invalid/">you</a>
        {% endblock %}
    </div>
</body>
</html>

静态文件的配置

Web应用中会出现大量的静态文件来使网页更加生动美观。类似于css样式文件,javaScript 脚本文件,图片文件,字体文件等静态资源。在jinja 中加载静态文件非常简单,只需要通过url_for全局函数实现

<link herf ="{{url_for('ststic',filename='about.css')}}">

url_for 函数默认会在项目根目录下的static文件夹中寻找about.css 文件,如果找到了,会生成相对于项目根目录的/static/about.css路径。当然我们也可以把静态文件不放在static文件夹中,此时就需要具体指定了

app = Flask(__name__,static_folder='C:\static')

标准类视图

标准类视图是继承自flask.views.View,并且来子类中必须实现dispath_request 方法,这个方法类似于视图函数,也要返回一个基于Response或者子类的对象。以下将用一个例子进行讲解:

from flask.views import View
class PersonalView(View):
    def dispatch_request(self):
        return "妮妮"
# 类视图通过add_url_rule方法和url做映射
app.add_url_rule('/users/',view_func=PersonalView.as_view('personalview'))

调节方法的视图

Flask还为我们提供了另外一个类视图 flask.views.MethondView,每一个HTTP方法执行不停的函数(映射到对应方法的小写的同名方法上)

class LoginView(views.MethodView):
    # 当客户端通过get方法进行访问的时候执行的函数
    def get(self):
        return render_template("login.html")

    # 当客户端通过post方法进行访问的时候执行的函数
    def post(self):
        email = request.form.get("email")
        password = request.form.get("password")
        if email == 'xx@qq.com' and password == '111111':
            return "登录成功!"
        else:
            return "用户名或密码错误!"

# 通过add_url_rule添加类视图和url的映射,并且在as_view方法中指定该url的名称,方便url_for函数调用
app.add_url_rule('/myuser/',view_func=LoginView.as_view('loginview'))
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:36:48  更:2022-04-18 17:37:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:24:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码