5. Django 2.1.7 runserver启动直接报错 django.core.exceptions.Improper

2022-01-17 10:05:50 浏览数 (1)

在其他办公电脑创建的Django项目 2.2.1 版本都可以直接 runserver 启动服务正常。但是本地创建的项目,只要执行python3 manage.py runserver 就直接报错。

错误详细日志

代码语言:javascript复制
F:pythonProjectmysite>python3 manage.py runserver
Performing system checks...

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x000001E95E2177B8>
Traceback (most recent call last):
  File "G:Python3Python37libsite-packagesdjangourlsconf.py", line 17, in include
    urlconf_module, app_name = arg
ValueError: too many values to unpack (expected 2)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "G:Python3Python37libsite-packagesdjangoutilsautoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "G:Python3Python37libsite-packagesdjangocoremanagementcommandsrunserver.py", line 117, in inner_run
    self.check(display_num_errors=True)
  File "G:Python3Python37libsite-packagesdjangocoremanagementbase.py", line 379, in check
    include_deployment_checks=include_deployment_checks,
  File "G:Python3Python37libsite-packagesdjangocoremanagementbase.py", line 366, in _run_checks
    return checks.run_checks(**kwargs)
  File "G:Python3Python37libsite-packagesdjangocorechecksregistry.py", line 71, in run_checks
    new_errors = check(app_configs=app_configs)
  File "G:Python3Python37libsite-packagesdjangocorechecksurls.py", line 40, in check_url_namespaces_unique
    all_namespaces = _load_all_namespaces(resolver)
  File "G:Python3Python37libsite-packagesdjangocorechecksurls.py", line 57, in _load_all_namespaces
    url_patterns = getattr(resolver, 'url_patterns', [])
  File "G:Python3Python37libsite-packagesdjangoutilsfunctional.py", line 37, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "G:Python3Python37libsite-packagesdjangourlsresolvers.py", line 533, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "G:Python3Python37libsite-packagesdjangoutilsfunctional.py", line 37, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "G:Python3Python37libsite-packagesdjangourlsresolvers.py", line 526, in urlconf_module
    return import_module(self.urlconf_name)
  File "G:Python3Python37libimportlib__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "F:pythonProjectmysitemysiteurls.py", line 20, in <module>
    url(r'^admin/', include(admin.site.urls)),
  File "G:Python3Python37libsite-packagesdjangourlsconf.py", line 27, in include
    'provide the namespace argument to include() instead.' % len(arg)
django.core.exceptions.ImproperlyConfigured: Passing a 3-tuple to include() is not supported. Pass a 2-tuple containing the list of patterns and app_name, and provide the namespace
 argument to include() instead.

F:pythonProjectmysite>

奇怪就在于我启动其他电脑创建的项目完全是没问题的,就是本机新建的项目会报错。而且是一句代码都没写。

导致错误是Django默认创建的urls.py存在问题

代码语言:javascript复制
from django.conf.urls import include, url
from django.contrib import admin

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

解决问题

最后调试了下,发现Django 创建项目后的 urls.py 文件有问题,启动就直接报错。修改如下即可解决问题。

代码语言:javascript复制
from django.contrib import admin
from django.urls import include, path # 增加导入include方法

urlpatterns = [
    path('admin/', admin.site.urls),
]

启动服务成功,如下:

代码语言:javascript复制
F:pythonProjectmysite>python3 manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
June 03, 2019 - 22:50:30
Django version 2.1.7, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

0 人点赞