“名称”在Django-URL中是什么意思?

Nor*_*ora 3 python django

我想知道,当使用url(时from django.conf.urls import url),是什么name = 'insert-something'意思?例如,当制作一个用于注册新用户的url时:

url(r'^register', views.register, name='register')
Run Code Online (Sandbox Code Playgroud)

名称=“注册”在这里是什么意思?为什么有必要?

谢谢!

cam*_*ski 6

该名称用于从Django / Python代码访问该URL。例如,您在urls.py

url(r'^main/', views.main, name='main')
Run Code Online (Sandbox Code Playgroud)

现在,每次您要重定向到主页时,您都可以说

redirect('app.main')
Run Code Online (Sandbox Code Playgroud)

appmain所在的django-app的名称在哪里。或者甚至可以将其用于html模板中的链接,例如

<a href="{% url 'app.main' %}">Go to main</a>
Run Code Online (Sandbox Code Playgroud)

例如,这会将您链接到www.example.com/main。你当然可以

redirect('http://www.example.com/main')
Run Code Online (Sandbox Code Playgroud)

要么

<a href="http://www.example.com/main">Go to main</a>
Run Code Online (Sandbox Code Playgroud)

分别,但是例如您想更改域或main/路由。如果所有网址都将在您的项目中进行硬编码,那么您将不得不在每个位置进行更改。但是,如果您改用url name属性,则只需在中更改url模式urls.py