Django 使用virtualenv运行应用程序时,设置没有属性ROOT\u URLCONF错误

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的服务器 但

向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) 相关主题:

我检查了以下几点:

1) DJANGO_设置_模块在manage.py中定义(指向apps.settings)

2) ROOT_URLCONF在settings.py中定义(指向apps文件夹中的outer url.py)

3) DJANGO_设置_模块和根_URLCONF添加到PyCharm的运行>编辑配置>环境变量

存在以下环境变量:

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'))
    )