
如果您构建站点地图并逐时手动更新,那么寒冷的日子会是什么样子。或者一次性为第二个作品支付每月定期订阅费用也不是一个明智的决定。
如果您正在寻找更好的方法,例如吃更好的大理石花纹牛肉的感觉,那么这道菜就适合您。本文将讨论为 Flask 应用程序开发动态站点地图xml。我们走吧!
目录:Flask 应用程序动态站点地图 XML 教程
- Python 包:
urlparse, render_template, make_response
- 解析顶级域名
- 静态网址列表
- 动态网址列表
- 站点地图 XML 模板
- 自定义响应头
- 动态站点地图 XML 的完整 Python 脚本
Python 包:urlparse、render_template、make_response
像往常一样,我们需要骨架化基本功能。以下是开发有品味且令人难以置信的动态站点地图 xml 所需的包列表
from urllib . parse import urlparse
From flask import render_templte, make_response
稍后,我将详细介绍这道菜中每个包装的用途。
解析App顶级域名
首先,在裁定映射 URL 之前,确定顶级域名地址是必不可少的。为了更好地尝到好处,这里我们需要 urlparse。下面是一个示例:
host_components = urlparse ( request . host_url )
host_base = host_components . scheme + "://" + host_components . netloc
静态网址列表
在生成每个 URL 之前,我们需要将静态 URL 和动态 URL 分开,因为某些路由是通过变量设置的。
我们需要创建一个静态 URL 列表并规则将添加到列表中的静态 URL 类型。代码示例如下:
static_urls = list ()
for rule in app . url_map . iter_rules ():
if not str ( rule ). startswith ( "/inactive" ):
if "GET" in rule . methods and len ( rule . arguments ) == 0 :
url = {
"loc" : f " { host_base }{ str ( rule ) } "
}
static_urls . append ( url )
做这道. 菜需要Flask内置的方法,即url_map, startswith
动态网址列表
为了获取变量URL路径,我们可以提前在Mongo中设置一组数据并在函数中调用它们。这是代码示例:
dynamic_urls = list ()
dynamicURL variable = db .sample. find ({})
站点地图 XML 模板
为了从服务器端捕获动态数据源,我们需要在前端 html 模板中使用 Jinja2。这是代码示例:
{% for url in static_urls %}
< url >
< loc > {{ url["loc"] }} </ loc >
</ url >
{% endfor %}
{% for url in dynamic_urls %}
< url >
< loc > {{ url["loc"] }} </ loc >
</ url >
{% endfor %}
自定义响应头
最后但并非最不重要的一点是,我们需要自定义与其他路由不同的站点地图 xml 标头。为了自定义标头,我们可以使用 make_response
response = make_response ( xml_sitemap )
response . headers ["Content-Type"] = "application/xml"
动态站点地图 XML 的完整 Python 脚本
在 AWS EC2 上部署 Flask 应用程序的完整脚本和命令
如果您对第 74 章 – 使用 MongoDB 的 Flask 应用程序动态站点地图 XML 感兴趣,请通过添加消息“第 74 章 + Flask 动态站点地图”来订阅我们的新闻通讯。我们会立即将脚本发送到您的邮箱。
我希望您喜欢阅读第 74 章 – 使用 MongoDB 的 Flask 应用程序动态站点地图 XML。如果您这样做了,请通过执行下列操作之一来支持我们,因为这总是对我们的频道有所帮助。
- 通过 PayPal ( paypal.me/Easy2digital ) 支持并捐赠我们的频道
- 订阅我的频道并打开通知铃Easy2Digital Youtube 频道。
- 关注并喜欢我的页面Easy2Digital Facebook 页面
- 使用主题标签 #easy2digital 在您的社交网络上分享文章
- 您订阅我们的每周通讯即可接收 Easy2Digital 最新文章、视频和折扣代码
- 通过 Patreon 订阅我们的月度会员即可享受独家优惠 ( www.patreon.com/louisludigital )