我正在使用Django Book学习Django。我在Macbook Pro上使用Mavericks 10.9运行python3.3.3,当我启用管理站点时,我得到了#34;发生了服务器错误。请联系管理员。"在浏览器中" 属性错误:' RegexURLResolver'对象没有属性' _urlconf_module' " Django服务器出错。我已经检查(并发布了)我的settings.py和urls.py文件,并且没有看到任何问题......
我在GIT here上找到了类似的项目,但我不相信它适用于我所发生的事情。我认为这可能是一个小牛队的问题,所以我运行了所有brew更新和django的pip升级,但我仍然收到此错误...
任何想法?
Porta-PuterTwo:LearningDjango arana$ python3 manage.py runserver
Validating models...
0 errors found
December 03, 2013 - 21:42:20
Django version 1.6, using settings 'LearningDjango.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Traceback (most recent call last):
File "/usr/local/lib/python3.3/site-packages/django/core/urlresolvers.py", line 339, in urlconf_module
return self._urlconf_module
AttributeError: 'RegexURLResolver' object has no attribute '_urlconf_module'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.3/site-packages/django/core/handlers/base.py", line 101, in get_response
resolver_match = resolver.resolve(request.path_info)
File "/usr/local/lib/python3.3/site-packages/django/core/urlresolvers.py", line 318, in resolve
for pattern in self.url_patterns:
urls.py:
from django.conf.urls import patterns, include, url
from LearningDjango.views import currentDatetime
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
url(r'^$', 'LearningDjango.views.home', name='home'),
url(r'^time/$', currentDatetime),
# url(r'^blog/', include('blog.urls')),
# Uncomment the next line to enable the admin:
# url(r'^admin/', include(admin.site.urls)),
url(r'^admin/', include(admin.site.urls)),
)
settings.py:
"""
Django settings for LearningDjango project.
For more information on this file, see
https://docs.djangoproject.com/en/1.6/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.6/ref/settings/
"""
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '#6wow&islp6!6@+$9b%j9@981k^@i_uf8^=u%7gp@0b_^j^6t9'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
TEMPLATE_DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.messages',
'django.contrib.sessions',
'django.contrib.staticfiles',
'books',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'LearningDjango.urls'
WSGI_APPLICATION = 'LearningDjango.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
# Internationalization
# https://docs.djangoproject.com/en/1.6/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'EST'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_URL = '/static/'
TEMPLATE_DIRS = (
os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),
)
答案 0 :(得分:2)
我在尝试运行位于我的django项目之外的测试模块时遇到此错误(练习django似乎不支持):
$ tree
.
├── example_project
│ ├── example_app
│ │ ├── __init__.py
│ │ └── models.py
│ ├── __init__.py
│ ├── manage.py
│ └── project
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── test
└── test_example_app.py
错误是由django在进程中的不同点假设不同的导入路径引起的,所以我通过附加到sys.path
来解决它。我在生产环境中犹豫不决,但我可以在测试中接受一些黑客行为。
以下是test_example_app.py
中的最终结果:
import os
import sys
import django
from django.conf import settings
from django.test import LiveServerTestCase
from django.test.utils import get_runner
class TestExampleApp(LiveServerTestCase):
...
if __name__ == '__main__':
sys.path.append(os.path.realpath('./example_project'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'example_project.project.settings'
django.setup()
sys.path.append(os.path.realpath('./example_project/project'))
testrunner = get_runner(settings)()
failures = testrunner.run_tests(['test_example_app'])
sys.exit(bool(failures))
答案 1 :(得分:1)
解决方案,就像在我看来一样奇怪,我已经将根文件夹指定为views.py文件中books.models导入的开始。这似乎不只是炸毁管理员的开始,但它给出的错误没有给出根本问题的很多(如果有的话)。只有当我回滚到python 2.7时,错误消息才能给我一些问题根源的指示。 我猜这是经典的新手,因为现在很明显网站的“根”应该是其中包含manage.py的文件夹,因此不应该在任何路径规范中。虽然这本书似乎没有说明......