【问题标题】:Django 1.11 circular import error, Also url pattern... current path doesn't matchDjango 1.11 循环导入错误,还有 url 模式...当前路径不匹配
【发布时间】:2018-09-11 14:40:36
【问题描述】:

我正在使用 django 1.11。这是我的回溯:

Traceback (most recent call last):
File "C:\Python3\envs\myDjangoEnv\lib\site- 
packages\django\utils\autoreload.py", line 228, in wrapper
fn(*args, **kwargs)
File "C:\Python3\envs\myDjangoEnv\lib\site- 
packages\django\core\management\commands\runserver.py", line 124, in 
inner_run
self.check(display_num_errors=True)

File "C:\Python3\envs\myDjangoEnv\lib\site- 
packages\django\core\management\base.py", line 359, in check
include_deployment_checks=include_deployment_checks,
File "C:\Python3\envs\myDjangoEnv\lib\site- 
packages\django\core\management\base.py", line 346, in _run_checks
return checks.run_checks(**kwargs)
File "C:\Python3\envs\myDjangoEnv\lib\site- 
packages\django\core\checks\registry.py", line 81, in run_checks
new_errors = check(app_configs=app_configs)
File "C:\Python3\envs\myDjangoEnv\lib\site- 
packages\django\core\checks\urls.py", line 16, in check_url_config
return check_resolver(resolver)
File "C:\Python3\envs\myDjangoEnv\lib\site- 
packages\django\core\checks\urls.py", line 26, in check_resolver
return check_method()
File "C:\Python3\envs\myDjangoEnv\lib\site- 
packages\django\urls\resolvers.py", line 255, in check
warnings.extend(check_resolver(pattern))
File "C:\Python3\envs\myDjangoEnv\lib\site- 
packages\django\core\checks\urls.py", line 26, in check_resolver
return check_method()
File "C:\Python3\envs\myDjangoEnv\lib\site- 
packages\django\urls\resolvers.py", line 254, in check
for pattern in self.url_patterns:
File "C:\Python3\envs\myDjangoEnv\lib\site- 
packages\django\utils\functional.py", line 35, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Python3\envs\myDjangoEnv\lib\site- 
packages\django\urls\resolvers.py", line 414, in url_patterns
raise ImproperlyConfigured(msg.format(name=self.urlconf_name))
django.core.exceptions.ImproperlyConfigured: The included URLconf '<module 
'irbSite.urls' from 'C:\\Users\\doxpr\\Desktop\\WorkingProje
ctClassBased Views\\WorkingProjectClassBased 
Views\\capstoneProject\\capstoneProject\\irbSite\\urls.py'>' does not appear 
to have any p
atterns in it. If you see valid patterns in the file then the issue is 
probably caused by a circular import.

如上所示,当我包含以下内容时出现循环导入错误:

url(r'irbSite/', include('irbSite.urls', namespace = 'irbSite')),
url(r'irbSite/', include('django.contrib.auth.urls'))

在项目文件夹的urls.py中:

from django.conf.urls import url, include
from django.contrib import admin
from django.contrib.auth import views as auth_views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', auth_views.LoginView.as_view(template_name = 
        'irbSite/login.html'),name='login'),
    url(r'irbSite/', include('irbSite.urls', namespace = 'irbSite')),
    url(r'irbSite/', include('django.contrib.auth.urls'))
]

但是,如果我不包含它,我的登录页面将会出现,但是当我单击注册链接时,我会收到以下错误: "url patterns" ... "^admin/ ^$ [name='login'] 当前路径 register.html 与其中任何一个都不匹配。"

我的目录(不是代码):

irbsite
  pycache
  migrations
  static
  templates
  init.py
  admin.py
  apps.py
  forms.py
  models.py
  tests.py
  urls.py
  views.py
project
  pycache
  init.py
  settings.py
  urls.py
  wsgi.py
manage.py

我的 views.py(在 irbSite 文件夹中):

from django.contrib.auth import login, logout
from django.core.urlresolvers import reverse_lazy
from django.views.generic import CreateView
from . import forms

class Registration(CreateView):
    form_class = forms.UserCreateForm
    success_url = reverse_lazy('login')
    template_name = 'register.html'

我的 urls.py(在 irbSite 文件夹中):

from django.conf.urls import url
from django.contrib.auth import views as auth_views
from . import views

app_name = 'irbSite'

ulrpatterns = [
    url(r'logout/$', auth_views.LogoutView.as_view(),name='logout'),
    url(r'register/$',views.Registration.as_view(template_name = 
      'irbSite/register.html'),name='registration'),
]

我正在修改我从 udemy 课程中学习的教程。我碰壁了,有什么建议吗?

【问题讨论】:

  • 分享更多错误回溯
  • @AnjaneyuluBatta 我刚刚添加了回溯

标签: django python-3.x django-views django-urls


【解决方案1】:

请注意,您没有收到循环导入错误,该消息只是表明它可能是导致问题的循环导入。

在这种情况下,您的irbSite/urls.py 中有错字。应该是urlpatterns 而不是ulrpatterns

【讨论】:

  • 哇。谢谢你。找了几天。当我删除错字时,错误消失了,但发生了另一个 404 错误。 “...Django 尝试了这些 URL 模式,顺序如下:^admin/ ^$ [name='login'] irbSite/ irbSite/ 当前路径 register.html 与其中任何一个都不匹配。”
  • 我应该补充一点,登录页面现在加载正常,但是当我点击注册链接时,它找不到 register.html。
  • 您尚未为register.html 定义网址格式。网址是/irbSite/register/
  • 如果你能原谅我在这里的无知,我怎么没有为 register.html 创建一个 url 模式?
  • A url() 将正则表达式映射到视图。例如url(r'register/$', views.Registration.as_view(...), ...)register/ 映射到注册视图。你还没有为register.html 定义一个url 模式,你为register/ 定义了它(并且include() 变成了/irbSite/register/)。请参阅the docs 了解更多信息。这是原始问题的主题,所以如果您仍然卡住,请提出一个新问题。