Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django.url.path中name参数的功能是什么?_Django_Url - Fatal编程技术网

django.url.path中name参数的功能是什么?

django.url.path中name参数的功能是什么?,django,url,Django,Url,在URL.py文件中创建路径时,通常会执行以下操作: urlpatterns = [ path('foo/',views.FooView,name='bar'), ] 我是Django的初学者,但我还没有看到path函数中name参数的函数。这个参数是用来做什么的,在Django支持的网站中如何有效地使用它?简而言之,此参数的作用是什么?为什么在创建路径时包含此参数很重要?谢谢 有时您希望命名视图,以便可以通过名称而不是url来引用它们。这样,如果应用程序中的url发生更改,您只需在一

在URL.py文件中创建路径时,通常会执行以下操作:

urlpatterns = [
    path('foo/',views.FooView,name='bar'),
]

我是Django的初学者,但我还没有看到path函数中name参数的函数。这个参数是用来做什么的,在Django支持的网站中如何有效地使用它?简而言之,此参数的作用是什么?为什么在创建路径时包含此参数很重要?谢谢

有时您希望命名视图,以便可以通过名称而不是url来引用它们。这样,如果应用程序中的url发生更改,您只需在一个位置更新代码(在
urls.py
模块中)。使用名称而不是硬编码url的现有代码不需要更新

例如,实用程序函数接受此名称并返回url:

from django.urls import reverse
reverse('bar')

如果不使用该名称,移动路由会很麻烦-您需要在所有模板和代码中查找并更新URL。

想象一下,您需要编写一个URL来引用您的
FooView
,然后您可以这样编写它

<a href="/foo/">link</a>
Django将进行计算,并用正确的URL替换它。这不仅让我们省去了一件头疼的事,而且还保证了URL是正确的(当然名称本身是正确的)。因此,如果它呈现HTML输出,我们不必担心,我们可能在其中一个url中编写了一个打字错误,因为
{%url..%}
标记如果找不到名称,或者如果参数不匹配,将引发错误

例如,当我们想重定向到一个页面时,我们也可以这样做。如果我们有一个重定向到
bar
的特定视图,它看起来像:

def redirect_view(request):
    return redirect('bar')
<a href="{% url 'bar' pk=2 %}">link</a>
def重定向_视图(请求):
返回重定向('bar')
再一次,我们完成了。如果以后URL发生更改,或者有人想要实现翻译后的URL(例如,您可以运行英语的服务器,运行俄语的服务器),那么这些URL将具有正确的翻译

如果URL包含参数,例如:

urlpatterns = [
    path('foo/<int:pk>/edit',views.FooView,name='bar'),
]
urlpatterns=[
路径('foo//edit',views.FooView,name='bar'),
]
我们也可以使用这个参数。在模板中,它看起来像:

def redirect_view(request):
    return redirect('bar')
<a href="{% url 'bar' pk=2 %}">link</a>
或者在视图中:

def redirect_view(request):
    return redirect('bar', pk=2)
def重定向_视图(请求):
返回重定向('bar',pk=2)

这个参数如何适应URL,不是我们的问题。Django会自己发现这一点。

作为初学者,上述答案并不适合我。也许我可以用更通俗的语言来解释

在url文件中添加url路径,并定义相应的视图函数来处理该路径后,如果我们希望通过其他地方的视图或html页面的模板文件访问相同的url,则可以使用代码中的名称和命名空间来访问它,就像变量名一样。这很有帮助,因为定义另一个url路径和/或使用直接链接会使代码更难维护

例如:

x=5

xi=x+1
xd=x-1
xf=x
比下面的更好,因为如果你想在某一天将
x
更改为其他内容,只需一次更改即可

x=5

xi=6
xd=4
xf=5

至于如何使用它,您可以使用上述答案或阅读。

参考此,当您在模板中执行
{%url'条'%}
,或在视图中执行
返回重定向('bar')
时…非常感谢,(医生先生?)Onsem!我想知道为什么有人想把它包括进去。因此,基本上,它是一种可以用来代替硬编码url的变量?是的,尽管它更好,因为您可以实现可翻译url,或带有参数的url,在这种情况下url不再是静态的,因此标识符将更好地解决此任务。非常有用,谢谢。因此,基本上,它是一种可以用来代替硬编码url的变量?是的,正是这样。你能举一个没有命名视图的使用
reverse
的例子吗?如何在模板中动态定位条的主键?当您使用类似
{%url'bar'pk=2%}
的逻辑表达式时,访问主键的语法是什么。我试着使用
{%url'bar'pk={{.pk}}%}
但是没有用。最后我找到了方法。正确的语法是{%url'bar'pk=object.id%}。这在文档中并不明显。我认为正确的问题应该是“如何访问标记中的对象属性”。这在基于Django后端的Flatter应用程序中有用吗?还是只对网页有用?@DagothAsh:它还可以用于/查找以计算下一条路径,或在序列化程序中计算端点,在该端点处获取相关对象,例如。