Python全栈 Web(Flask框架、变量、模板)

简介: Flask、Python、Django、框架、服务器、客户端、浏览器、交互、WEB、Python前端、CSS、JAVA、HTML、H5、PHP、JavaScript、JQuery、分布式开发
模板 Templates:
模板中的语法规范
变量:
变量时一种特殊的占位符   告诉模板引擎该位置的
值是从渲染模板时的数据中来获取的
在视图中:

@app.route("/temp")
def temp():
    return render_template("01_temp.html",uname="user name")

name和age就是要传递到xxx.html中的变量
在模板中:
{{变量名}}

    <title>{{unam}}</title>


Python代码
@app.route("/temp")
def temp():
    dic = {"bookName":"钢铁是咋炼成的",
           "author": "鲁迅",
           "price": 32.5 ,
           "publisher": "北京大学出版社"}

    # 字典传参  模板中直接用变量名  不需要params.xxx
    return render_template("01_temp.html", **dic)
    return render_template("01_temp.html", params=dic)


    # 第二种传参方式
    bookName = "钢铁是咋炼成的"
    author = "鲁迅"
    price = 32.5
    publisher = "北京大学出版社"
    return render_template("01_temp.html", **locals())
    return render_template("01_temp.html", params=locals())



模板
    <div>
        <h1><<{{bookName}}>></h1>
        <h3>作者:{{author}}</h3>
        <h3>价格:{{price}}</h3>
        <h3>出版社:{{publisher}}</h3>
    </div>
    <div>
        <h1><<{{params.bookName}}>></h1>
        <h3>作者:{{params.author}}</h3>
        <h3>价格:{{params.price}}</h3>
        <h3>出版社:{{params.publisher}}</h3>

变量可以传递任何类型参数 包括示例对象

    tup = ("刘德华", "郭富城", "黎明")

    list = ["胡歌", "神话", "仙剑"]


    class Person(object):

        def __init__(self):
            self.name = "None"

        def say(self):
            return "类方法"


    per = Person()
    return render_template("01_temp.html", params=locals())



过滤器:
什么是过滤器?
过滤是允许在变量输出显示之前改变变量的值
语法:
{{变量|过滤器}}
Jinja2 变量过滤器
capitalize:
首字母大写 其他小写
lower:
把值转换成全小写
upper:
把值转换成全大写
title:
把值中的每个单首字母全大写
trim:
去掉两端空格


        <h3>原始值:{{params.uname}}</h3>
        <h3>capitalize:{{params.uname|capitalize}}</h3>
        <h3>upper:{{params.uname|upper}}</h3>
        <h3>lower:{{params.uname|lower}}</h3>
        <h3>title:{{params.uname|title}}</h3>


控制结构:
if结构:
{% if 条件 %}
要执行的代码
{% endif %}
if-else:
{% if 条件 %}
瞒住条件要执行的代码
{% else %}
不满足执行
{% endif %}
if-elif-else:
{% if 条件 %}
瞒住条件要执行的代码
{% elif 条件 %}
瞒住条件要执行的代码
{% else %}
不满足执行
{% endif %}


        if结构:
        {% if params.list %}
            <h1>{{params.list}}</h1>
        {% endif %}

        <p>
            if-else:
            {% if params.uname %}
                <h1>params.uname</h1>
            {% else %}
                <h1><a href="{{url_for('login')}}">登录</a></h1>
            {% endif %}


for结构:
{% for 变量 in 元组/字典/列表 %}
遍历内容
{% endfor %}


        for循环:
            <div style="font-size: 22px;">
                {% for str in params.list %}
                    <p>{{str}}</p>
                {% endfor %}
            </div>

            <ul>
                {% for str in params.tup %}
                    <li>{{str}}</li>
                {% endfor %}
            </ul>

            <div style="color: red;">
                {% for key, value in params.dic.items() %}
                    <h2>{{key}}:{{value}}</h2>
                {% endfor %}






宏:
使用{% macro %}标签  声明宏


        宏:
            <p>
                <!--声明-->
                {% macro show(str) %}
                    <li style="background-color: aqua;">{{str}}</li>
                {% endmacro %}
            </p>

            <!--使用宏显示数据-->
            <p>
                {% for str in params.list %}
                    {{show(str)}}
                {% endfor %}
            </p>


为了方便重复使用 允许将宏放在单独的模板文件宏单独声明定义
创建  macro.html 
文件内可以写很多个宏  类似于函数模块
使用时导入 macro.html
{% import "macro.html" as macros %}
调用:
{{macro.show()}}
模板的包含:
在多处重复使用的模板代码可以放在单独的文件中 可以被其他的模板所包含(引用)
{% include "xxx.html" %}

静态文件:
什么是静态文件?
在Flask中不能与服务器动态交互的文件都是静态文件
如:css,js,图片,音视频,压缩文件。。。。
并且不能使用物理路径进行查找
静态文件处理:
所有的静态文件都保存在 项目文件中的一个 static 文件夹中
static文件内可以创建子文件夹
在访问静态文件时需要通过/static/资源路径 进行访问
相当于将逻辑路径的控制权交给物理路径  
后面就可以写物理路径进行查找文件了

静态文件反向解析:

		url_for("static", filename="<file_path>")
		<img src="{{ url_for('static', filename=) }}"


模板的继承:
什么是模板的继承?
模板的继承类似于类的继承 如果一个模板中出现大量模板的话
那么就可以使用继承的方式来简化开发
继承的语法:
父模板中
需要定义哪些内容在子模板中是可以被重写的
{% block 块名 %}
{% endblock %}
block:
应以允许定义在子模板中被修改的内容
       在父模板中正常显示 没有影响
           在子模板中可以被重写

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>这是父模板中  头部</h1>
    {% block container %}
    <h1>这是父模板中  住部</h1>
    {% endblock %}
    <h1>这是父模板中  地部</h1>
</body>
</html>

子模板中
使用{% extends "父模板名称" %} 来完成继承
使用{% block 块名 %} 来重写父模板中的同名内容
{% block 块名 %}
{% endblock %}

{% extends "04_parent.html" %}

{% block container %}
    {{ super() }}
    <h1>子标签</h1>
{% endblock %}


自定义错误页面
404错误处理
@app.errorhandler(404)
def page_not_found(e):
return render_template("404.html"), 404


@app.errorhandler(404)
def Error_404():
    return render_template("404.html")


500错误处理
@app.errorhandler(500)
def internal_server_error(e):
return render_template("505.html"), 505



@app.errorhandler(505)
def Error_404():
    return render_template("505.html")



继承后可以无所以为的修改网页内容  想怎么该怎么改



相关文章
|
12天前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
106 68
|
14天前
|
Shell Python
[oeasy]python049_[词根溯源]locals_现在都定义了哪些变量
本文介绍了Python中`locals()`函数的使用方法及其在调试中的作用。通过回顾变量赋值、连等赋值、解包赋值等内容,文章详细解释了如何利用`locals()`函数查看当前作用域内的本地变量,并探讨了变量声明前后以及导入模块对本地变量的影响。最后,文章还涉及了一些与“local”相关的英语词汇,如`locate`、`allocate`等,帮助读者更好地理解“本地”概念在编程及日常生活中的应用。
27 9
|
26天前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
26天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
35 2
|
26天前
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`&quot;&quot;&quot;` 或 `&#39;&#39;&#39;`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
43 2
|
27天前
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
|
28天前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
70 1
|
1月前
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
76 2
|
28天前
|
JSON API 数据格式
使用Python和Flask构建简单的Web API
使用Python和Flask构建简单的Web API
|
29天前
|
机器学习/深度学习 存储 数据挖掘
Python 编程入门:理解变量、数据类型和基本运算
【10月更文挑战第43天】在编程的海洋中,Python是一艘易于驾驭的小船。本文将带你启航,探索Python编程的基础:变量的声明与使用、丰富的数据类型以及如何通过基本运算符来操作它们。我们将从浅显易懂的例子出发,逐步深入到代码示例,确保即使是零基础的读者也能跟上步伐。准备好了吗?让我们开始吧!
26 0
下一篇
DataWorks