📅  最后修改于: 2023-12-03 15:41:29.977000             🧑  作者: Mango
在 Django 中,您可以使用 reverse()
函数来获取一个 view 的 URL。这个函数需要一个 view 名称作为参数,然后返回该视图的完整 URL。
例如,如果您有一个名为 my_view
的视图,则可以使用以下代码获取其绝对 URL:
from django.urls import reverse
url = reverse('my_view')
但是,这个方法只适用于您在 urls.py 文件中硬编码了 URL。如果您想使用动态 URL 名称或动态参数构建 URL,则需要使用 reverse()
函数的另一个变体:reverse_lazy()
。该函数与 reverse()
类似,但是仅在需要时才执行:
from django.urls import reverse_lazy
url = reverse_lazy('my_view_name', args=[1])
这里的 args
参数是可选的,它传入my_view_name
参数中带有变量的视图中。例如,如果您有一个视图如下:
def my_view(request, my_id):
# ...
return HttpResponse('Hello World')
你就可以通过这种方式来获取URL:
from django.urls import reverse_lazy
url = reverse_lazy('my_view', args=[1])
最后,无论您是使用 reverse()
还是 reverse_lazy()
函数,都可以为其传递任何关键字参数,这些关键字参数会被解释为查询字符串参数。例如:
from django.urls import reverse_lazy
url = reverse_lazy('my_view', args=[1], kwargs={'foo': 'bar'})
这将生成以下 URL:
/my_view/1/?foo=bar
希望本文对您了解 Django 的绝对 URL 有所帮助。