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+Ajax+Mysql实现数据库数据的展示

    最近老师让搞一个系统,仅仅展示一下数据库的数据 在做海底捞时,是交接的师兄的项目,用的语言是java,框架是SSM(Spring、SpringMVC、MyBatis),这次我准备用Python写,前端是从网上下载的免费的,修改的:https://blackrockdigital.github.io/startbootstrap-sb-admin-2/inde…

    2023年4月9日
    00
  • Python之Django自动实现html代码(下拉框,数据选择)

      #模板   class IndexForm(forms.Form):   # 模板,用户提交的name和这里的变量名一定要是一致的.否则不能获取数据   user = forms.CharField(min_length=6, error_messages={‘required’: ‘用户名不能为空’, ‘min_length’: ‘用户名长度不能小于6…

    Django 2023年4月13日
    00
  • Django在Win7下的安装及创建项目hello word简明教程

    下面我就为你详细讲解“Django在Win7下的安装及创建项目hello word简明教程”的完整攻略。 安装Django 安装Python:下载安装Python 3.x 版本,安装完成后记得勾选“Add Python to PATH”选项。 安装Django:在命令行界面(CMD)输入以下命令进行安装:pip install django 测试是否安装成功…

    Django 2023年5月16日
    00
  • Django中反向生成models

    我们在展示django ORM反向生成之前,我们先说一下怎么样正向生成代码。 正向生成,指的是先创建model.py文件,然后通过django内置的编译器,在数据库如mysql中创建出符合model.py的表。 反向生成,指的是先在数据库中create table,然后通过django内置的编译器,生成model代码。 一 准备工作 创建django工程以及…

    Django 2023年4月12日
    00
  • Django一些常用参数的设置

    在form表单里面   autocomplete=”off”  浏览器输入框关闭自动提示 在ajax里面要发送文件数据需要实例化一个FormData()对象, 还需要设置 processData:false,     //告诉jQuery不要处理我的数据 contentType:false,      //告诉jQuery不要设置content类型 实现示例…

    Django 2023年4月12日
    00
  • 详解Django通用视图中的函数包装

    我们将详细讲解“详解Django通用视图中的函数包装”的完整攻略,并且提供两个示例说明。 1. 什么是Django通用视图? Django通用视图是一组预定义的视图,可以轻松地编写Web应用程序。它们消除了常见的开发任务,例如分页、查询集管理、表单处理等。Django通用视图是基于类的视图,它们提供了一种更为组合、更具可重用性和可扩展性的方式来编写视图。 2…

    Django 2023年5月16日
    00
  • Django中引入bootstrap的详细图文详解

    下面是Django中引入bootstrap的详细攻略和示例说明: 1. 安装Bootstrap 首先,我们需要安装Bootstrap。Bootstrap是一个开源的前端框架,提供了一系列易于使用的HTML、CSS和JavaScript库,可以快速构建美观的响应式网站和应用程序。 有很多种方法可以安装Bootstrap,例如从官方网站下载、使用CDN、使用NP…

    Django 2023年5月16日
    00
  • django与python版本对应关系 附加djangorestframework框架

    Django与python版本 Django 1.11版本兼容Python 2.7、3.4、3.5、3.6、3.7(added in 1.11.17)# 1.11.5 python<=3.6 Django 2.0版本兼容Python 3.4、3.5、3.6、3.7 Django 2.1、2.2版本兼容Python 3.5、3.6、3.7 Django …

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