Django - URL 和命名空间

Jin*_*inx 2 python django

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

书.url:

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

书评:

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
Run Code Online (Sandbox Code Playgroud)

模板/book/home.html:

<div id="register">
    <p>
        <a href="{% url 'account:register' %}"> Sign Up </a>
    </p>
</div>
Run Code Online (Sandbox Code Playgroud)

帐户/网址:

app_name='account'
urlpatterns=(
    path('register/', views.RegisterView.as_view(), name='register'),
    path('successful/', views.successful_created, name='successful'),
)
Run Code Online (Sandbox Code Playgroud)

arg*_*rgo 5

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

在与添加书籍帐户urls.py应用程序位于同一目录中的主项目中。settings.py

urlpatterns = [
    url(r'^book/', include('book.urls', namespace="book")),
    url(r'^account/', include('account.urls', namespace="account")),
]
Run Code Online (Sandbox Code Playgroud)

现在你的book.urls将如下所示:

app_name = 'book'
urlpatterns = [
    path('', views.HomePageView.as_view(), name='home')
]
Run Code Online (Sandbox Code Playgroud)

帐户/网址将显示:

app_name='account'
urlpatterns=(
    path('register/', views.RegisterView.as_view(), name='register'),
    path('successful/', views.successful_created, name='successful'),
)
Run Code Online (Sandbox Code Playgroud)