url – Django模板标签
Django模板是一个使用Django模板语言标记的文本文档或Python字符串。Django是一个强大的包含电池的框架,为在模板中呈现数据提供了便利。Django模板不仅允许从视图到模板传递数据,还提供了一些有限的编程功能,如变量、for循环、注释、扩展、url等。
本文围绕如何在模板中使用url标签展开。 url标签 返回一个与给定视图和可选参数相匹配的绝对路径参考(没有域名的URL)。这是一种在不违反DRY原则的情况下输出链接的方法,因为你必须在模板中硬编码URL。
语法
{% url 'some-url-name' v1 v2 %}
第一个参数是一个URL模式名称。它可以是一个带引号的字面意思或任何其他的上下文变量。其他参数是可选的,应该是空格分隔的值,将作为URL中的参数使用。
示例
{% url 'template1' %}
url – Django模板标签说明
用一个例子说明如何在Django模板中使用url标签。考虑一个名为geeksforgeeks的项目,有一个名为geeks的应用程序。
现在创建两个视图,我们将通过它们访问模板。
在 geeks/views.py ,
# import Http Response from django
from django.shortcuts import render
# create a function
def geeks_view(request):
# return response
return render(request, "geeks.html")
def nav_view(request):
# return response
return render(request, "nav.html")
创建一个url路径来映射到这个视图。URL需要有一个名字,然后可以在模板和url标签中使用。在geeks/urls.py ,
from django.urls import path
# importing views from views..py
from .views import geeks_view, nav_view
urlpatterns = [
path('1/', geeks_view, name = "template1"),
path('2/', nav_view, name = "template2"),
]
现在我们将创建两个模板来演示now标签。在geeks.html中创建一个模板。
<html>
<h1>Template 1</h1>
<!-- Link to template 2 -->
<a href = "{% url 'template2' %}">Go to template 2</a>
</html>
在geeks.html中创建一个模板。
<html>
<<h2>Template 2</h2>
<!-- Link to template 1 -->
<a href = "{% url 'template1' %}">Go to template 1</a>
</html>
现在访问http://127.0.0.1:8000/1 。
点击该链接,它将重定向到其他网址。
高级用法
假设你有一个视图,app_views.client ,它的URLconf需要一个客户端ID(这里,client()是视图文件app_views.py中的一个方法)。URLconf行可能看起来像这样。
path('client/<int:id>/', app_views.client, name='app-views-client')
如果这个应用程序的URLconf被包含在项目的URLconf中,其路径是这样的。
path('clients/', include('project_name.app_name.urls'))
…然后,在一个模板中,你可以像这样创建一个链接到这个视图。
{% url 'app-views-client' client.id %}
该模板标签将输出字符串/clients/client/123/。