Django无法使用include方法将url映射到视图

2024-05-23 18:05:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我的项目目录中有以下URL.py

主项目URL.py

from django.contrib import admin
from django.urls import path, include
from . import views

urlpatterns = [
    path('', views.render_calculator, name='render_calculator'),
    path('calculator/', views.render_calculator, name='render_calculator'),
    path('disclaimer/', views.render_disclaimer, name='render_disclaimer'),
    path('cookiepolicy/', views.render_cookiepolicy, name='render_cookiepolicy'),
    path('privacypolicy/', views.render_privacypolicy, name='render_privacypolicy'),
    path('dashboard/', views.render_dashboard, name='render_dashboard'),
    path('about/', views.render_about, name='render_about'),
    path('admin/', admin.site.urls),
    path(r'^', include('accounts.urls'))
]

现在,我创建了一个新的应用程序accounts(我在settings.py中将其添加到我的应用程序中),我希望将该应用程序的URL存储在它自己的目录中,如下所示:

帐户应用程序URL.py

from . import views
from django.urls import path

urlpatterns = [
    path('register/', views.render_register, name='render_register'),
]

帐户应用程序视图。py:

from django.shortcuts import render

def render_register(request, template="register.html"):
    return render(request, template)

但是,此配置会引发以下错误:

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/register
Using the URLconf defined in CFD.urls, Django tried these URL patterns, in this order:

[name='render_calculator']
calculator/ [name='render_calculator']
disclaimer/ [name='render_disclaimer']
cookiepolicy/ [name='render_cookiepolicy']
privacypolicy/ [name='render_privacypolicy']
dashboard/ [name='render_dashboard']
about/ [name='render_about']
admin/
^
The current path, register, didn't match any of these.

丢失的那块在哪里


Tags: pathnamefrompyimportregisterurlrender
2条回答

改变这个

path(r'^', include('accounts.urls'))

path('', include('accounts.urls'))

您正在将path()与regex r'^'一起使用,这导致了您的问题

为了用正则表达式定义路径,需要使用re_path

因此,将其更改为以下行:

    re_path(r'^', include('accounts.urls'))

或者你可以使用

    path('', include('accounts.urls'))

相关问题 更多 >