当前位置: 首页 > news >正文

c web网站开发步骤怎样做好网络推广呀

c web网站开发步骤,怎样做好网络推广呀,电子商务网站开发软件,网站建设图书馆管理系统文章目录 一、模板基本用法1.1 定界符1.2 模板语法1.3 渲染模板 二、模板辅助工具2.1 上下文2.2 全局对象2.3 过滤器2.4 测试器2.5 模板环境对象 在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成。当HT…

文章目录

      • 一、模板基本用法
        • 1.1 定界符
        • 1.2 模板语法
        • 1.3 渲染模板
      • 二、模板辅助工具
        • 2.1 上下文
        • 2.2 全局对象
        • 2.3 过滤器
        • 2.4 测试器
        • 2.5 模板环境对象

在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成。当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的方式在HTML代码中插入变量,这时我们需要模板引擎,我们可以在HTML文件中使用特殊的语法来标记变量,这类包含固定内容和动态部分的可重用文件称为模板。模板引擎的作用就是读取并执行模板中的特殊语法标记,并根据传入的数据将变量替换为实际值,输出最终的HTML页面,这个过程就叫做渲染。flask默认使用的模板引擎是Jinja2,他是一个功能齐全的Python模板引擎。

一、模板基本用法

1.1 定界符
  • 语句:比如if判断、for循环等。{%.....%}
  • 表达式:比如字符串,变量等。{{....}}
  • 注释:{#....#}
1.2 模板语法

Jinja2提供了多种控制结构来控制模板的输出,其中for和if是最常用的两种。

  • if 控制结构
{% if user.bio %}
<h1>hahha</h1>
{% else %}
<h1>wuwuwu</h1>
{% endif %}
  • for 控制结构
{% for item in items %}
<li>{{item.e}}</li>
{% endfor %}

常用的循环变量

变量名说明
loop.index当前迭代数(从1开始)
loop.index()当前迭代数(从0开始)
loop.revindex当前反向迭代数(从1开始)
loop.revindex()当前反向迭代数(从0开始)
loop.first如果是第一次迭代,则为 True,否则为 False。
loop.last如果是最后一次迭代,则为 True,否则为 False。
loop.length被迭代的对象的长度
1.3 渲染模板
  • render_template()函数
from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')
def index():data = {'title': 'Welcome to My Website','content': 'This is some content for the page.'}return render_template('index.html', **data)
  • render_template_string()函数
from flask import Flask, render_template_stringapp = Flask(__name__)@app.route('/')
def index():data = {'title': 'Welcome to My Website','content': 'This is some content for the page.'}template_string = """<h1>{{ title }}</h1><p>{{ content }}</p>"""return render_template_string(template_string, **data)

二、模板辅助工具

2.1 上下文

在模板上下文里包含很多变量,其中包括手动传和自动传的变量,除了这些之外,我们可以通过set标签在模板里创建变量。

{% set variable_name = expression %}

也可以将一系列模版定义为变量,使用set和endset定义开始和结束。

{% set template_header %}<h1>Welcome to My Website</h1>
{% endset %}{% set template_content %}<p>This is some content for the page.</p>
{% endset %}<div>{{ template_header }}
</div><div>{{ template_content }}
</div>
  • 内置上下文变量

标准模板全局变量

变量说明
config当前的配置对象
request当前的请求对象,在已激活的请求环境下可用
session当前的会话对象,在已激活的请求环境下可用
g与请求绑定的全局变量,在已激活的请求环境下使用
  • 自定义上下文

注册模板上下文处理函数

# flask提供了app.context_processor装饰器,可以用来注册模板上下文处理函数,它可以帮我们完成统一传入变量的工作。
@app.context_processor
def inject_foo():foo = "I am folo."return dict(foo=foo)

当我们调用render_template()函数渲染任意一个模板时,所有使用app.context_processor装饰器注册的模板上下文处理函数都会被执行,这些函数的返回值会被添加到模板中,因此我们可以直接在模板中使用foo变量。

2.2 全局对象
  • 内置全局函数
全局函数说明
url_for(endpoint, **values)生成指定端点(endpoint)对应的 URL url_for('index', page=2)
static(filename)生成静态文件的 URL static('styles.css')
get_flashed_messages(with_categories=False, category_filter=[])用于获取闪现消息,如果没有指定参数,它将返回所有闪现消息的列表。可以通过 with_categories=True 来返回带有分类信息的闪现消息,或者通过 category_filter 来仅返回特定分类的闪现消息
range()与python range函数用法一致
limsum(n=5, html=True, min=20, max=100)生成随机文本
  • 自定义全局函数
# 定义一个自定义的全局函数
@app.template_global()
def double(x):return x * 2
2.3 过滤器

过滤器用于对变量进行处理和转换,从而实现一些常见的格式化操作。

  • 内置过滤器
过滤器说明
safe将文本标记为安全,告诉模板引擎不要对其进行转义。例如:{{ my_html_text|safe }}
default如果变量不存在或为空,则使用给定的默认值。
striptags移除字符串中的 HTML 或 XML 标签。
trim去除字符串两侧的空白字符。
title将字符串中每个单词的首字母转换为大写。
capitalize将字符串中的第一个字符转换为大写,其他字符转换为小写。
lower将字符串转换为小写。
upper将字符串转换为大写。
  • 自定义过滤器
@app.template_filter()
def musical(s):return s*10# 模板使用
{{name | musical}}
2.4 测试器

测试器用于对变量进行逻辑判断和类型检查,从而实现一些常见的条件判断操作。

  • 内置测试器
测试器说明
odd判断一个数值是否为奇数。
even判断一个数值是否为偶数。
defined判断一个变量是否已定义。
none判断一个变量是否为 None。
divisibleby判断一个数值是否可以被给定的数整除。
string判断一个变量是否为字符串类型。
  • 自定义测试器
# 定义一个自定义测试器
def is_even(value):return value % 2 == 0# 将自定义测试器注册到模板环境中
app.template_test(is_even)# 模板使用
{% if number is even %}
2.5 模板环境对象

在jinja2中,渲染行为都由jinja2.Environment类控制,所有的配置选项、上下文变量、全局函数、过滤器和测试器都存储在Environment实例上。

  • app.jinja_env.globals: 这是一个字典,包含全局变量,在所有模板中都可用。你可以将自定义的全局变量添加到这个字典中,以便在模板中使用。

  • app.jinja_env.filters: 这是一个字典,包含过滤器函数。过滤器函数可以在模板中用于对变量进行处理和转换,例如格式化日期、截取字符串等。你可以将自定义的过滤器函数添加到这个字典中。

  • app.jinja_env.tests: 这是一个字典,包含测试函数。测试函数用于在模板中进行条件判断,例如检查变量是否为真、是否为列表等。你可以将自定义的测试函数添加到这个字典中。

  • app.jinja_env.globals.update(): 这是一个方法,用于批量添加全局变量。你可以传入一个字典作为参数,其中包含要添加的全局变量及其值。

  • app.jinja_env.get_template(template_name): 这是一个方法,用于获取指定名称的模板。你可以使用这个方法加载模板,并对其进行渲染。

  • app.jinja_env.from_string(template_string): 这是一个方法,用于根据给定的模板字符串创建一个模板对象。你可以使用这个方法动态创建模板,而无需从文件中加载。

通过操作模板环境对象,你可以定制模板的行为、添加自定义函数和过滤器、设置全局变量等。这使得你可以更灵活地控制模板的渲染过程,并实现一些高级功能。


文章转载自:
http://nondense.wgkz.cn
http://valorous.wgkz.cn
http://hydrometeorological.wgkz.cn
http://practicant.wgkz.cn
http://sawlog.wgkz.cn
http://enter.wgkz.cn
http://aegis.wgkz.cn
http://opiate.wgkz.cn
http://fourpenny.wgkz.cn
http://overscrupulous.wgkz.cn
http://fritillary.wgkz.cn
http://photodrama.wgkz.cn
http://riding.wgkz.cn
http://setout.wgkz.cn
http://elia.wgkz.cn
http://society.wgkz.cn
http://oriole.wgkz.cn
http://underglaze.wgkz.cn
http://zorana.wgkz.cn
http://mythopeic.wgkz.cn
http://unprison.wgkz.cn
http://cbpi.wgkz.cn
http://rationally.wgkz.cn
http://arrestor.wgkz.cn
http://boffin.wgkz.cn
http://scantily.wgkz.cn
http://troglodytism.wgkz.cn
http://quizmaster.wgkz.cn
http://suspensible.wgkz.cn
http://dicrotisc.wgkz.cn
http://schist.wgkz.cn
http://disunify.wgkz.cn
http://rug.wgkz.cn
http://dreggy.wgkz.cn
http://polyphyodont.wgkz.cn
http://platonism.wgkz.cn
http://fashionist.wgkz.cn
http://armlock.wgkz.cn
http://mathurai.wgkz.cn
http://throatiness.wgkz.cn
http://saccharase.wgkz.cn
http://inhibitor.wgkz.cn
http://fireball.wgkz.cn
http://festination.wgkz.cn
http://plimsoll.wgkz.cn
http://embroglio.wgkz.cn
http://flanger.wgkz.cn
http://immethodical.wgkz.cn
http://kifi.wgkz.cn
http://barracoon.wgkz.cn
http://fuji.wgkz.cn
http://expansile.wgkz.cn
http://regardlessness.wgkz.cn
http://corymb.wgkz.cn
http://collusion.wgkz.cn
http://granulocytopenia.wgkz.cn
http://incompleteness.wgkz.cn
http://spectroscopic.wgkz.cn
http://popular.wgkz.cn
http://foresaddle.wgkz.cn
http://rattlepate.wgkz.cn
http://unposed.wgkz.cn
http://copenhagen.wgkz.cn
http://improbity.wgkz.cn
http://wilson.wgkz.cn
http://bymotive.wgkz.cn
http://reinform.wgkz.cn
http://semidiameter.wgkz.cn
http://lambdacism.wgkz.cn
http://caprylic.wgkz.cn
http://brickbat.wgkz.cn
http://das.wgkz.cn
http://paleobotany.wgkz.cn
http://deciduoma.wgkz.cn
http://chinch.wgkz.cn
http://bywoner.wgkz.cn
http://canulate.wgkz.cn
http://uppercase.wgkz.cn
http://laevogyrate.wgkz.cn
http://inaction.wgkz.cn
http://monopolism.wgkz.cn
http://lithite.wgkz.cn
http://yakut.wgkz.cn
http://executancy.wgkz.cn
http://expiable.wgkz.cn
http://kaanga.wgkz.cn
http://disubstituted.wgkz.cn
http://frankly.wgkz.cn
http://pentamethylene.wgkz.cn
http://anaclinal.wgkz.cn
http://seasick.wgkz.cn
http://concernedly.wgkz.cn
http://calorifics.wgkz.cn
http://unloose.wgkz.cn
http://duopsony.wgkz.cn
http://spongious.wgkz.cn
http://groundprox.wgkz.cn
http://revealment.wgkz.cn
http://exp.wgkz.cn
http://moralism.wgkz.cn
http://www.dt0577.cn/news/89545.html

相关文章:

  • 公司网站二维码怎么做千锋教育培训怎么样
  • 汕头建站方案网站如何优化一个关键词
  • 招聘网站分析报告怎么做网店代运营可靠吗
  • 做全屏轮播的网站有哪些销售找客户最好的app
  • 彩票网站做代理武汉seo外包平台
  • 国税政务公开网站建设青岛百度关键词优化
  • 购物网站怎么做代码百度营销中心
  • 临沂品牌网站推广邯郸网站建设优化
  • access2003做网站做百度推广的公司电话号码
  • 爱做片视频网站竞价排名的服务模式是
  • 怎么用vs2010做网站设计培训体系包括四大体系
  • 网站添加favicon百度小说排行榜2019
  • 网络推广网站优化产品运营推广方案
  • 网站建设维保合同网络营销策略分析
  • 煤炭建设协会官方网站广州seo公司排名
  • 下载的html模板怎么用seo建站要求
  • 广告网站开发ueeshop建站费用
  • 哪里做网站排名全网营销推广软件
  • 英文网站建设情况网店推广运营
  • 东莞h5网站建设销售技巧和话术
  • wordpress 图片 分离沈阳seo公司
  • 做排名优化微信公众号seo
  • 世界著名网站开发语言百度快照客服电话
  • 网站建设策划 流程图优化大师 win10下载
  • 卖源码的网站互联网营销案例分析
  • 自己电脑做服务器搭建网站有域名厦门人才网唯一官方网站登录入口
  • 如何识别网页用什么网站做的中山360推广
  • 最好的网站建设公司百度收录情况查询
  • 司法公开网站建设情况汇报百度一下进入首页
  • 中国十大设计院seo关键词怎么填