1、
https://www.cnblogs.com/ZJackSparrow/p/11960586.html
inclusions/_archives.html ... {% for date in date_list %} <li> <a href="{% url 'blog:archive' date.year date.month %}"> {{ date.year }} 年 {{ date.month }} 月 </a> </li> {% endfor %} ...
这里 {% url %}
这个模板标签的作用是解析视图函数 blog:archive
对应的 URL 模式,并把 URL 模式中的年和月替换成 date.year
,date.month
的值。
{% url %}
模板标签接收的第一个参数为被解析视图函数的端点值,这个端点值由 2 部分组成,中间由冒号分隔。第一部分为在应用的 urls.py 中指定的 app_name
的值(充当命名空间,这样即使不同 app 下有相同的视图函数名,也不会冲突),第二部分 path
函数中传入的 name
参数的值。比如在 blog 应用的 urls.py 模块,我们指定了 app_name = 'blog'
,archive
视图函数的 url 模式为 path('archives/<int:year>/<int:month>/', views.archive, name='archive')
,因此对应的端点值为 blog:archive
。
{% url %}
模板标签接收的其它参数为 URL 路径参数,即 URL 模式中路径参数转换器需要捕获的值。例如 archive
视图函数对应的 URL 模式为 archives/<int:year>/<int:month>/
,假设 date.year=2017
,date.month=5
,那么 {% url 'blog:archive' date.year date.month %}
模板标签返回的值为 /archives/2017/5/。
为什么要使用 {% url %} 模板标签呢?事实上,我们把超链接的 href 属性设置为 /archives/{{ date.year }}/{{ date.month }}/
同样可以达到目的,但是这种写法是硬编码的。虽然现在 blog:archive
视图函数对应的 URL 模式是这种形式,但是如果哪天这个模式改变了呢?如果使用了硬编码的写法,那你需要把每一处 /archives/{{ date.year }}/{{ date.month }}/
修改为新的模式。但如果使用了 {% url %} 模板标签,则不用做任何修改。
2、
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-05-25 WireShark 常用过滤条件
2020-05-25 zabbix监控温度及风扇
2018-05-25 centos7环境下的Mysql5.7.22安装