Django 使用virtualenv运行应用程序时,设置没有属性ROOT\u URLCONF错误
向Django devserver发出请求时出错(它正在虚拟环境dj_venv中运行): 奇怪的是,当我启动服务器并且没有发出任何请求时,我没有收到任何错误: daria@daria:~/cms.media$/venvs/dj_venv/bin/激活 (dj_venv)daria@daria:~/cms.media$python manage.py运行服务器验证 模型 使用“apps.settings”设置发现0个Django版本1.4.11错误 开发服务器正在退出时运行 带有控件C的服务器 但是在第一次请求之后,我得到了如上所示的AttributeError 我知道引发此错误是因为我的设置对象没有属性“ROOT_URLCONF”,但我已在我的虚拟环境的settings.py和global_settings.py中定义了它。我还看了这些文章: 1) 正式文件(和) 2) 相关主题:Django 使用virtualenv运行应用程序时,设置没有属性ROOT\u URLCONF错误,django,settings,Django,Settings,向Django devserver发出请求时出错(它正在虚拟环境dj_venv中运行): 奇怪的是,当我启动服务器并且没有发出任何请求时,我没有收到任何错误: daria@daria:~/cms.media$/venvs/dj_venv/bin/激活 (dj_venv)daria@daria:~/cms.media$python manage.py运行服务器验证 模型 使用“apps.settings”设置发现0个Django版本1.4.11错误 开发服务器正在退出时运行 带有控件C的服务器 但
DEFAULT_INDEX_TABLESPACE=1
DJANGO_SETTINGS_MODULE=apps.settings
PYTHONUNBUFFERED=1
ROOT_URLCONF=urls
我的项目结构如下:
.
├── apps
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
│ └── webapp
│ ├── context_processors.py
│ ├── defaults.py
│ ├── __init__.py
│ ├── models.py
│ ├── templates
│ │ └── ...
│ ├── urls.py
│ └── views.py
├── manage.py
└── ...
另外,setting.py wich定义了ROOT\u URLCONF:
import os
import sys
from django.utils.translation import ugettext_noop as _
from django import template
DEBUG = True
# turn off for the perfomance in the production server
TEMPLATE_DEBUG = DEBUG
#USE_TZ = False
#TIME_ZONE = 'Europe/Moscow'
LANGUAGE_CODE = 'ru'
USE_I18N = True
USE_L10N = True
############
# SPICY App
APP_VERSION = '2.0'
AJAX_API_VERSION = '1.0'
# deprecated
MESSAGES = {'success': _('Changes were successfully saved.'),
'error': _('Please, correct the errors below.')}
APP_SOURCE_PATH = 'apps/'
PROJECT_ROOT = os.path.abspath('.')
ADDITIONAL_PYTHON_PATH = [
os.path.join(PROJECT_ROOT, APP_SOURCE_PATH),
]
############
# SITESKIN & STATIC
SITE_ID = 1
USE_CUSTOM_ADMIN = True
# deprecated
SITESKIN = ''
AJAX_ACCESS_CONTROL_ALLOW_ORIGIN = '*.localhost'
CACHE_PREFIX = '%s-' % SITESKIN
CACHE_BACKEND = 'locmem://'
###################
# PROFILE
LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/signin/'
REGISTRATION_OPEN = True
SECRET_KEY = 'lalala'
LOGIN_URL = '/signin/'
LOGIN_REDIRECT_URL = '/'
AUTHENTICATION_BACKENDS = (
'spicy.core.profile.auth_backends.CustomUserModelBackend',
)
USE_CAPTCHA = False
USE_FEEDBACK_CAPTCHA = False
CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.math_challenge'
CAPTCHA_NOISE_FUNCTIONS = ()
#('captcha.helpers.noise_arcs','captcha.helpers.noise_dots',)
...
###############
## DJANGO
ADMINS = (
# ('Your Name', 'your_email@domain.com'),
)
MANAGERS = ADMINS
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
#CACHE_BACKEND = 'memcached://127.0.0.1:11311/'#'locmem:///'
CACHE_TIMEOUT = 1*60 # seconds
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
SESSION_SAVE_EVERY_REQUEST = True
#SESSION_COOKIE_DOMAIN = ''
STATIC_URL = '/static/'
THEMES_PATH = os.path.abspath('..')
try:
from config import *
except ImportError, msg:
raise ImportError, 'Using default config settings, check "config" directory.\n'
for _path in ADDITIONAL_PYTHON_PATH:
sys.path.insert(0, os.path.abspath(_path))
## deprecated
# while SITESKIN exists
STATIC_ROOT = os.path.abspath('../static/')
## deprecated
SERVICES = (
'spicy.core.profile.services.ProfileService',
'spicy.core.trash.services.TrashService',
'spicy.mediacenter.services.MediaService',
'spicy.mediacenter.services.LibraryService',
'spicy.history.services.HistoryService',
'spicy.xtag.services.TagService',
'spicy.ratings.services.RatingService',
)
LOCALE_PATHS = (os.path.join(PROJECT_ROOT, 'locale'), )
#TEST_RUNNER = 'django_nose.runner.NoseTestSuiteRunner'
#NOSE_ARGS = ['-v', '--with-color']
ROOT_URLCONF = 'apps.urls'
STATICFILES_FINDERS = (
'spicy.core.siteskin.loaders.ThemeStaticFinder',
'spicy.core.siteskin.loaders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
TEMPLATE_LOADERS = (
'spicy.core.siteskin.loaders.ThemeTemplateLoader',
'django.template.loaders.app_directories.Loader',
'spicy.core.siteskin.loaders.BackendTemplateLoader',
)
template.add_to_builtins('django.templatetags.i18n')
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'spicy.core.profile.context_processors.auth',
'spicy.core.siteskin.context_processors.base',
'spicy.core.admin.context_processors.base',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.request',
'apps.webapp.context_processors.site_content',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
#'django.middleware.locale.LocaleMiddleware', - don't use it =)
'django.middleware.common.CommonMiddleware',
'spicy.core.profile.middleware.AuthMiddleware',
'django.middleware.doc.XViewMiddleware',
# XXX is it required ??
'spicy.core.siteskin.middleware.AjaxMiddleware',
'spicy.core.siteskin.threadlocals.ThreadLocals',
)
if DEBUG:
MIDDLEWARE_CLASSES += (
# for developers
'spicy.core.rmanager.middleware.ProfileMiddleware',
)
INSTALLED_APPS = [
# Django admin
'django.contrib.admin',
# Django native apps
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.humanize',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.staticfiles',
# Application
'apps.webapp',
# Spicy core components
'spicy.core.admin',
'spicy.core.service',
'spicy.core.siteskin',
'spicy.core.simplepages',
# Spicy apps
'spicy.presscenter',
'spicy.categories',
'spicy.mediacenter',
'spicy.core.profile',
'spicy.feedback',
# 'spicy.labels',
'spicy.seo',
'spicy.xtag',
# 'django_nose',
# 'captcha',
'sorl.thumbnail',
'pytils',
'raven.contrib.django.raven_compat',
]
# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False.
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'common': {
'format': '[%(asctime)s][%(levelname)-9s] %(name)s %(filename)s:%(funcName)s:%(lineno)d | %(message)s',
'datefmt': '%H:%M:%S',
},
},
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'django.utils.log.NullHandler',
},
'console':{
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'common'
},
# 'sentry': {
# 'level': 'INFO',
# 'class': 'raven.handlers.logging.SentryHandler',
# 'dsn': '{{ spicy.config.sentry }}',
# }
},
'loggers': {
'': {
'handlers': ['console'],
'propagate': True,
'level': 'INFO',
},
'django': {
'handlers': ['console'],
'propagate': True,
'level': 'INFO',
},
'django.request': {
'handlers': ['console'],
'level': 'ERROR',
'propagate': False,
},
}
}
# App custom models
#CUSTOM_USER_MODEL = ''
CUSTOM_DOCUMENT_MODEL = 'webapp.Document'
#LABELS_CONSUMER = CUSTOM_DOCUMENT_MODEL
#CUSTOM_MEDIA_MODEL = 'blog.BlogMedia'
#CUSTOM_MEDIA_PROVIDER_MODEL = 'blog.BlogMediaProvider'
和manage.py:
#!/usr/bin/env python
import os, sys
from importlib import import_module
os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'apps.settings')
from django.conf import settings
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
外部URL.py(./apps/url.py):
内部URL.py(./apps/webapp/url.py):
从django.conf.url.defaults导入*
公共URL=模式(
'',
)
公共URL+=模式(
url(r“^create/$”、“create_article”、name='create'),
url(r'^a(?P\d+/$),'document',name='doc'),
url(r'^a(?P\d+)/edit/$,'edit_article',name='edit'),
)
urlpatterns=模式(
'',
url(r'^',包括(public_url,namespace='public'))
)
这一例外的原因可能是什么?我已经尝试了我在stackoverflow找到的所有东西。我猜原因可能是对settings.py或ROOT_URLCONF的引用错误,我尝试了各种选择,但仍然得到了属性错误
而且我猜原因可能是在中间件中,当服务器执行请求时,它可能会重新定义ROOT_URLCONF(因为在我不向服务器发出任何请求之前它是正常的),但我不知道在哪里可以修复它
我的猜测对吗?如果是,我该如何解决我的问题?希望得到任何帮助 您似乎必须将您的应用程序(显然称为“应用程序”)注册到您的
已安装的应用程序中
另外,您正在根目录下设置apps.url
,但只在环境值上设置url
(不带apps.
部分)是否可以显示settings.py
文件(不带密钥
)?@VladimirDanilov,添加了settings.py。更新Django 1.4中的默认项目布局我修复了-将环境值ROOT_URLCONF更改为apps.url。现在它就像settings.py中的ROOT_URLCONF。但是我仍然有一个错误。谢谢大家的评论。错误的原因是我的麻烦。我把环境配置错了。
#!/usr/bin/env python
import os, sys
from importlib import import_module
os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'apps.settings')
from django.conf import settings
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
from django.conf.urls.defaults import include, patterns, url
from django.conf import settings
from spicy import utils
from django.contrib import admin
admin.autodiscover()
handler404 = 'spicy.core.siteskin.views.page_not_found'
handler500 = 'spicy.core.siteskin.views.server_error'
handler403 = 'spicy.core.siteskin.views.forbidden'
urlpatterns = patterns(
'',
url(r'^django/', include(admin.site.urls)),
url(r'^', include('spicy.core.admin.urls', namespace='spicyadmin')),
url(r'^captcha/', include('captcha.urls')),
)
from django.conf.urls.defaults import *
public_urls = patterns(
'',
)
public_urls += patterns(
url(r'^create/$', 'create_article', name='create'),
url(r'^a(?P<doc_id>\d+)/$', 'document', name='doc'),
url(r'^a(?P<doc_id>\d+)/edit/$', 'edit_article', name='edit'),
)
urlpatterns = patterns(
'',
url(r'^', include(public_urls, namespace='public'))
)