根据名称建立网址

时间:2018-12-27 06:15:23

标签: django django-views

我有一个'accounts:produce_setup'的网址(即名称空间/应用是'accounts',而网址的名称是'product_setup')。我想构建与此视图关联的完整网址,并将其作为上下文传递到模板中。

我将如何去做?我会使用build_absolute_uri()吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

您应将您的应用程序包含在project_name/urls.py中,并将您的应用程序绑定到特殊的URL模式,如下所示:

from account.urls import urlpatterns as account_urlpatterns

urlpatterns = [
    url(r'^account/', include(account_urlpatterns, namespace='account')),
    url(r'^admin/', admin.site.urls),
]

然后在account/urls.py中,您可以实现urlpatterns并为每个url设置特殊名称,如下所示:

from django.conf.urls import url
from .views import produce_setup_view

urlpatterns = [
    url(r'^produce_setup/$', produce_setup_view, name='produce_setup')),
]

最后,您可以像这样在templateviews or any python file in your django project中使用它们:

.pydjango项目中:

from django.urls import reverse

url_string = reverse('account:produce_setup')
print(url_string)

>>> '/account/produce_setup/'

template中:

<a href="{% url "accounts:product_setup" %}"></a>

祝你好运:)

答案 1 :(得分:1)

实际上,您不需要。您只需在模板中使用{% url "accounts:product_setup" %}。有关更多详细信息,请检查here。而且,如果您要构建的URL是视图(也许是出于其他原因),则可以使用reverse