Django url标签详解

Django中提供了一个url标签,它可以用于生成URL,这对于模板中的链接很有用。url标签可以帮助我们在模板中对应用程序中的视图进行链接,因此我们可以展示数据无需手动构建URL。

url语法:

{% url 'url_name' arg1 arg2 ... %}
  • url_name: URLconf中定义的名称(或视图)。
  • arg1, arg2: URL中的参数。

URL名称是定义URL时设置的名称,它是在URLconf中使用name参数定义的。url标签根据这个名称来查找匹配的URL,并将它们生成一个完整的URL。

下面是一个简单的示例:

URLconf:

from django.urls import path
from . import views

urlpatterns = [
    path('hello/<name>/', views.hello, name='hello'),
]

在模板中,我们可以使用以下命令:

<a href="{% url 'hello' name='John' %}">Hello John</a>

这将生成以下URL:

<a href="/hello/John/">Hello John</a>

除了具名参数之外,我们还可以使用位置参数:

<a href="{% url 'hello' 'John' %}">Hello John</a>

结果与具名参数相同。

url标签还可以接受变量作为参数。下面是一个使用变量的示例:

{% url 'hello' name=name %}

在这个例子中,name是一个模板变量,我们将其传递到url标记中作为参数。

如果URL中需要更多的参数,则可以按照URLconf中的顺序列出参数:

<a href="{% url 'hello' 'John' 'Doe' %}">Hello John Doe</a>

在这个例子中,我们传递了两个参数,分别是名字和姓氏。我们在URLconf中声明时,也可以描述这些参数,该 URLconf 中使用尖括号<>来设置这些参数。例如,以下URLconf声明了一个带有类别和文章ID的URL:

urlpatterns = [
    path('blog/<category>/<int:article_id>/', views.blog, name='blog'),
]

在模板中使用url标签根据名称生成URL:

{% url 'blog' category='python' article_id=42 %}

将生成以下URL:

/blog/python/42/

在以上的示例中,我们将category设置为“python”,而article_id设置为“42”。

有时,URLconf中的变量名与模型中的属性名相同,我们可以直接传递模型实例作为参数:

URLconf:

urlpatterns = [
    path('profile/<username>/', views.profile, name='profile'),
]

模型:

class User(models.Model):
    username = models.CharField(max_length=20)

模板:

{% for user in users %}
    <a href="{% url 'profile' user %}">{{ user.username }}</a>
{% endfor %}

在模板中,我们可以遍历所有的User实例,并将每个实例作为参数传递给url标签。

总结

url标签简化了模板与应用程序视图之间的链接创建,允许我们根据视图名称和参数生成完整的URL。它还允许我们使用变量来动态构建URL,使得我们更加灵活。在开发Django应用程序时,url标签是非常实用的工具之一。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django url标签详解 - Python技术站

(0)
上一篇 2023年3月12日
下一篇 2023年3月12日

相关文章

  • 第四篇Django之模板语言

    一 模板的执行 模板的创建过程,对于模板,其实就是读取模板(其中嵌套着模板的标签),然后将Model中获取的数据插入到模板中,最后将信息返回给用户 def current_datetime(request): now = datetime.datetime.now() html = “<html><body>It is now %s.…

    Django 2023年4月16日
    00
  • Django中blank和NULL

    当我们在django中添加一个数据库字段时,我们通常会写models.CharField(max_length = 100,null = True,blank = True)。用ForeignKey,DecimalField做同样的事情。有什么基本的区别在于 null = True only blank = True only null = True,bla…

    Django 2023年4月11日
    00
  • Django rest framework 自定义Exception

      使用Dango rest framework时,有时需要raise APIException到前端,为了统一错误返回格式,我们需要对exception的格式进行调整。 方法: 1. 在project/utils目录下新建exceptions.py 内容:   1 from rest_framework.views import exception_han…

    Django 2023年4月16日
    00
  • django admin 登陆快速添加验证码功能

    1. 安装包 pip install django-multi-captcha-admin django-simple-captcha   2. setting.py INSTALLED_APPS = [ ‘xxxxxxx’, #系统内置的模块 ‘….’, ‘app01’, ‘multi_captcha_admin’, #1 ‘django.contri…

    Django 2023年4月13日
    00
  • Django——-json部分整理

      import json dic={“chao”:”123″} dic_en=json.dumps(dic) print(dic_en,type(dic_en)) {“chao”: “123”} <class ‘str’> print(dic,type(dic)) {‘chao’: ‘123’} <class ‘dict’> jso…

    Django 2023年4月16日
    00
  • 表单的增 删 改 查 django单表操作 增 删 改 查

            一、实现:增、删、改、查 1、获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取出数据。 目的:通过classes(班级表数据库)里面的字段拿到对应的数据。   2、添加功能 配置url分发路由增加一个add_classes.html页面 写一个def add_…

    Django 2023年4月13日
    00
  • Python中DJANGO简单测试实例

    下面是详细讲解“Python中DJANGO简单测试实例”的完整攻略。 1. 简介 Django是一个高级Web框架,它基于Python语言构建。Django的官方文档提供很好的入门教程,但是这些教程在实践中可能会遇到一些问题。本文将提供一个更详细的DJANGO简单测试实例教程,其中包含了两个示例,可以帮助你更好地入门Django。 2. 示例一 2.1 创建…

    Django 2023年5月16日
    00
  • [Django]用户权限学习系列之设计自有权限管理系统设计思路

    若在阅读本片文章遇到权限操作问题,请查看本系列的前两章! http://www.cnblogs.com/CQ-LQJ/p/5609690.html和http://www.cnblogs.com/CQ-LQJ/p/5604331.html 现在步入正题,这篇文章是关于自有权限管理系统设计的思路描述,自有权限管理系统是抛弃django自带的后台管理界面,基于自己…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部