【问题标题】:No module named django.conf.urls.defaults没有名为 django.conf.urls.defaults 的模块
【发布时间】:2018-12-18 21:44:55
【问题描述】:

我在按照此处的指南构建 django 应用程序时遇到了一些问题:https://code.djangoproject.com/wiki/searchengine

硬件/软件:

Django 版本 2.1.4 Python 3.7 版 Windows 10 联想 Yoga 720

输入以下代码时:

from django.conf.urls.defaults import *

urlpatterns = patterns('',
(r'^/?$', 'google.searchengine.views.search'),
)

进入urls.py,命令行返回:

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x03D341E0>
Traceback (most recent call last):
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\commands\runserver.py", line 117, in inner_run
    self.check(display_num_errors=True)
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\base.py", line 379, in check
    include_deployment_checks=include_deployment_checks,
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\base.py", line 366, in _run_checks
    return checks.run_checks(**kwargs)
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\checks\registry.py", line 71, in run_checks
    new_errors = check(app_configs=app_configs)
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config
    return check_resolver(resolver)
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver
    return check_method()
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\urls\resolvers.py", line 396, in check
    for pattern in self.url_patterns:
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\functional.py", line 37, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\urls\resolvers.py", line 533, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\functional.py", line 37, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\urls\resolvers.py", line 526, in urlconf_module
    return import_module(self.urlconf_name)
  File "C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\importlib\__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 "C:\Users\Konjo\konjo_search\konjo_search\urls.py", line 23, in <module>
    from django.conf.urls.defaults import *
ModuleNotFoundError: No module named 'django.conf.urls.defaults'

从多轮故障排除、搜索和测试看来,某些模块要么丢失,要么在较新版本的 django 中被更改。对于此事的任何帮助将不胜感激。

更新

已降级到 Python 2.7.10 和 Django 1.11.17。

文件结构查看:file structure

新错误:

Unhandled exception in thread started by <function wrapper at 0x0000000004060CF8>
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\django\utils\autoreload.py", line 228, in wrapper
    fn(*args, **kwargs)
  File "C:\Python27\lib\site-packages\django\core\management\commands\runserver.py", line 124, in inner_run
    self.check(display_num_errors=True)
  File "C:\Python27\lib\site-packages\django\core\management\base.py", line 359, in check
    include_deployment_checks=include_deployment_checks,
  File "C:\Python27\lib\site-packages\django\core\management\base.py", line 346, in _run_checks
    return checks.run_checks(**kwargs)
  File "C:\Python27\lib\site-packages\django\core\checks\registry.py", line 81, in run_checks
    new_errors = check(app_configs=app_configs)
  File "C:\Python27\lib\site-packages\django\core\checks\urls.py", line 16, in check_url_config
    return check_resolver(resolver)
  File "C:\Python27\lib\site-packages\django\core\checks\urls.py", line 26, in check_resolver
    return check_method()
  File "C:\Python27\lib\site-packages\django\urls\resolvers.py", line 256, in check
    for pattern in self.url_patterns:
  File "C:\Python27\lib\site-packages\django\utils\functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Python27\lib\site-packages\django\urls\resolvers.py", line 407, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:\Python27\lib\site-packages\django\utils\functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Python27\lib\site-packages\django\urls\resolvers.py", line 400, in urlconf_module
    return import_module(self.urlconf_name)
  File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module
    __import__(name)
  File "C:\Users\Konjo\google\google\urls.py", line 1, in <module>
    from django.conf.urls.defaults import *
ImportError: No module named defaults

-近条

【问题讨论】:

    标签: python django


    【解决方案1】:

    django.conf.urls.defaults 已在 Django 中删除。如果问题出在您自己的代码中,您可以通过将导入更改为来修复它

    from django.urls import include, path
    
    
    urlpatterns = path('', 'google.searchengine.views.search'),
    

    )

    【讨论】:

    • 返回:文件“C:\Users\Konjo\konjo_search\konjo_search\urls.py”,第 19 行,在 urlpatterns = path('', 'google.searchengine.views.search '),文件“C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\urls\conf.py”,第 73 行,在 _path raise TypeError('view must在 include() 的情况下是可调用的或列表/元组。') 类型错误:在 include() 的情况下,视图必须是可调用的或列表/元组。
    【解决方案2】:

    试试:

    from google.searchengine.views import search
    from django.urls import path
    
    urlpatterns = [
        path('', search)
    ]
    

    编辑: 如果您按照指南进行操作,我认为它实际上是:

    from searchengine.views import search
    from django.urls import path
    
    urlpatterns = [
        path('', search)
    ]
    

    【讨论】:

    • 如果你使用python 3,这个教程会有很多问题。
    • 现在运行 python 2.7。返回:文件“C:\Python27\lib\importlib_init_.py”,第 37 行,在 import_module __import__(name) 文件“C:\Users\Konjo\google\google\urls.py”中,第 2 行,在 from django.urls import path ImportError: cannot import name path
    【解决方案3】:

    django url dispatcher 自 django 2.0 以来发生了变化

    from django.urls import path
    
    from . import views
    
    urlpatterns = [
        path('articles/2003/', views.special_case_2003),
        path('articles/<int:year>/', views.year_archive),
        path('articles/<int:year>/<int:month>/', views.month_archive),
        path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
    ]
    

    编辑... 在你的情况下:

    from django.urls import path
    
    urlpatterns = [
        path('/', google.searchengine.views.search),
    ]
    

    但是你需要导入对应的视图,因为你的urls.py中没有google.searchengine.views.search导入

    https://docs.djangoproject.com/en/2.1/topics/http/urls/

    【讨论】:

    • 返回:文件“C:\Users\Konjo\konjo_search\konjo_search\urls.py”,第 18 行,在 中来自 . import views ImportError: cannot import name 'views' from 'konjo_search' (C:\Users\Konjo\konjo_search\konjo_search_init_.py)
    • 我已经编辑了我的评论,尝试一下,并检查正确的视图路径
    • 嗯,教程是用python2编写的,如果你不知道如何翻译成python3,我建议回到python2以使其工作
    • 检查一下:connellybarnes.com/code/web_search 它说,该插件与python2兼容...在您的项目中必须使用python2...
    • 现在运行 python 2,类似的问题。
    【解决方案4】:

    模块 from django.conf.urls.defaults import * 已从 Django 中删除。

    你可以这样做:

    from django.urls import path
    
    urlpatterns = path('',
        (r'^/?$', google.searchengine.views.search),
    )
    

    【讨论】:

    • 返回:文件“C:\Users\Konjo\konjo_search\konjo_search\urls.py”,第 20 行,在 urlpatterns = path('', 'google.searchengine.views.search ') 文件“C:\Users\Konjo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\urls\conf.py”,第 73 行,在 _path raise TypeError('view must be在 include() 的情况下是可调用的或列表/元组。') 类型错误:在 include() 的情况下,视图必须是可调用的或列表/元组。
    • 你的view.py在哪里?
    • views.py 位于搜索引擎文件夹下。返回:文件“C:\Python27\lib\importlib_init_.py”,第 37 行,在 import_module __import__(name) 文件“C:\Users\Konjo\google\google\urls.py”中,第 1 行,在 from django.urls import path ImportError: cannot import name path
    【解决方案5】:

    我猜你有一个名为 google 的项目和一个名为 searchengine 的应用程序,(根据教程) 这样做,

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.search, name='search'),
    ]
    

    【讨论】:

    • 返回:文件“C:\Users\Konjo\google\google\urls.py”,第 1 行,在 from django.urls import path ImportError: cannot import name path
    • 路径存在于 django 2.x 中。确保您已升级 django 版本。
    猜你喜欢
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 2019-03-28
    • 2017-12-30
    • 2018-01-06
    • 2018-11-11
    • 2015-04-10
    • 2013-11-27
    相关资源
    最近更新 更多