Django-URL和名称空间

时间:2018-08-26 04:42:54

标签: python django

我正在Book应用程序中构建Django模板,并使用URL标记重定向到Account应用程序的URL。但它说account' is not a registered namespace

book.urls:

app_name = 'book'
urlpatterns = [
    path('', views.HomePageView.as_view(), name='home'),
    path('account/', include('account.urls', namespace='account'))
]

book.views:

class HomePageView(generic.TemplateView):
    template_name = 'book/home.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['all_books'] = Book.objects.all()
        return context

templates / book / home.html:

<div id="register">
    <p>
        <a href="{% url 'account:register' %}"> Sign Up </a>
    </p>
</div>

帐户/网址:

app_name='account'
urlpatterns=(
    path('register/', views.RegisterView.as_view(), name='register'),
    path('successful/', views.successful_created, name='successful'),
)

2 个答案:

答案 0 :(得分:4)

您面临的问题主要是因为您试图从account应用程序定义book应用程序。您需要做的是

在与urls.py相同目录的主项目settings.py中,添加 book account 应用。

urlpatterns = [
    url(r'^book/', include('book.urls', namespace="book")),
    url(r'^account/', include('account.urls', namespace="account")),
]

现在您的 book.urls 看起来会:

app_name = 'book'
urlpatterns = [
    path('', views.HomePageView.as_view(), name='home')
]

帐户/网址如下所示:

app_name='account'
urlpatterns=(
    path('register/', views.RegisterView.as_view(), name='register'),
    path('successful/', views.successful_created, name='successful'),
)

答案 1 :(得分:0)

我相信,如果您删除命名空间= account并仅使用path('account /',include('account.urls'),它将可以正常工作。