无法解决AttributeError:在进行大量研究后,“设置”对象没有属性“ROOT_URLCONF”的难题 [英] Cannot solve an AttributeError: 'Settings' object has no attribute 'ROOT_URLCONF' conundrum after doing a lot of research

查看:129
本文介绍了无法解决AttributeError:在进行大量研究后,“设置”对象没有属性“ROOT_URLCONF”的难题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个问题,我一直在努力解决一段时间。我正在按照网站上的说明创建我的第一个Django应用程序。我目前正在访问管理页面,但它还没有工作。另外,当我运行本地服务器时,我收到错误发生服务器错误,请联系管理员。在尝试访问django管理页面之前,这并没有发生。
错误回调的最后一行是:

  AttributeError:'设置'对象没有属性'ROOT_URLCONF'

完整的回调是:

 code>追溯(最近的最后一次呼叫):
文件/usr/lib/python2.7/wsgiref/handlers.py,第85行,运行
self.result = application self.environ,self.start_response)
文件/home/username/Desktop/djangoajax/local/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py,第67行, __call__
return self.application(environ,start_response)
文件/home/username/Desktop/djangoajax/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py ,第241行,__call__
response = self.get_response(request)
文件/home/username/Desktop/djangoajax/local/lib/python2.7/site-packages/django/core/处理程序/ base.py,第82行,在get_response
urlconf = settings.ROOT_URLCONF
文件/ home / username / Desktop / djangoajax / local / lib / python2 .7 / site-packages / django / utils / functional.py,第185行内部
返回func(self._wrapped,* args)
AttributeError:'设置'对象没有属性'ROOT_URLCONF '

manage.py是:

 #!/ usr / bin / env python 
import os
import sys

如果__name__ ==__main__:
os.environ.setdefault(DJANGO_SETTINGS_MODULE,mysite.settings)

from django.core.management import execute_from_command_line

execute_from_command_line(sys.argv)

settings.py是:

 #code##Django设置为mysite项目。 
import os
from django.conf import settings
from django.conf.urls.defaults import *
from mysite import views

DIRNAME = os。 path.abspath(os.path.dirname(__ file__))
DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS =(
('我的名字','电子邮件@


MANAGERS = ADMINS

DATABASES = {
'default':{
'ENGINE' :'django.db.backends。',#添加'postgresql_psycopg2','mysql','sqlite3'或'oracle'。
'NAME':'',#或使用sqlite3的数据库文件路径。
'USER':'',#不与sqlite3一起使用。
'PASSWORD':'',#不与sqlite3一起使用。
'HOST':'',#设置为localhost的空字符串。不适用于sqlite3。
'PORT':'',#设置为空字符串为默认值。不适用于sqlite3。
}
}

#此安装的本地时区。可以在这里找到选择:
#http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
#虽然并不是所有的操作系​​统都可以选择所有选项。
#在Windows环境中,必须将其设置为系统时区。
TIME_ZONE ='America / New_York'

#此安装的语言代码。所有选择都可以在这里找到:
#http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE ='en-us'

SITE_ID = 1

#如果将其设置为False,Django将进行一些优化,以便
#加载国际化机器。
USE_I18N = True

#如果将其设置为False,Django将不会根据当前语言环境格式设置日期,数字和
#日历。
USE_L10N = True

#如果将其设置为False,Django将不会使用时区感知数据时间。
USE_TZ = True

#将保存用户上传文件的目录的绝对文件系统路径。
#示例:/home/media/media.lawrence.com/media/
MEDIA_ROOT =''

#处理从MEDIA_ROOT提供的媒体的URL。确保使用
#尾部斜线。
#示例:http://media.lawrence.com/media/,http://example.com/media/
MEDIA_URL =''

#静态文件的绝对路径应该被收集到。
#不要把任何东西放在这个目录下;在应用程序的static /子目录和STATICFILES_DIRS中存储静态文件
#。
#示例:/home/media/media.lawrence.com/static/
STATIC_ROOT = os.path.join(DIRNAME,'static /')

#静态文件的URL前缀。
#示例:http://media.lawrence.com/static/
STATIC_URL ='/ static /'

#静态文件的附加位置
STATICFILES_DIRS =(
#将字符串放在这里,像/ home / html / static或C:/ www / django / static
#总是使用正斜杠,甚至在Windows上
#不要忘记使用绝对路径,而不是相对路径


#知道如何在
#各个位置找到静态文件的finder类列表。
STATICFILES_FINDERS =(
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#'django.contrib.staticfiles .finders.DefaultStorageFinder',


#使其独一无二,不要与任何人共享。
SECRET_KEY ='xan1 @ gt5(i6uuf8gw)^ 440-0 @ 0x)s5dgr9-3 =#wnczlk)t%$ mm'

#知道如何导入模板的可调用列表从各种来源。
TEMPLATE_LOADERS =(
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
#'django.template.loaders .eggs.Loader',


MIDDLEWARE_CLASSES =(
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware ',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
#取消注释下一行的简单点击保护:
#'django.middleware.clickjacking.XFrameOptionsMiddleware',


ROOT_URLCONF ='mysite.urls'

#Django的runserver使用的WSGI应用程序的Python虚线路径。
WSGI_APPLICATION ='mysite.wsgi.application'

import os.path
TEMPLATE_DIRS =(
os.path.join(os.path.dirname(__ file__) ,模板),
#将字符串放在这里,如/ home / html / django_templates或C:/ www / django / templates。
#即使在Windows上,始终使用正斜杠。
#不要忘记使用绝对路径,而不是相对路径


INSTALLED_APPS =(
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django .contrib.staticfiles',
#取消注释下一行以启用管理员:
'django.contrib.admin',
#取消注释下一行以启用管理员文档:
#'django.contrib.admindocs',


#样本记录配置。通过此配置执行的唯一有形日志
#是在DEBUG = False时向每个HTTP 500错误发送电子邮件至
#的网站管理员。
#有关如何自定义日志配置的详细信息,请参阅http://docs.djangoproject.com/en/dev/topics/logging for
#。
LOGGING = {
'version':1,
'disable_existing_loggers':False,
'filters':{
'require_debug_false':{
' ()':'django.utils.log.RequireDebugFalse'
}
},
'处理程序':{
'mail_admins':{
'level' 'ERROR',
'filters':['require_debug_false'],
'class':'django.utils.log.AdminEmailHandler'
}
},
'logger':{
'django.request':{
'handlers':['mail_admins'],
'level':'ERROR',
'propagate'真的,
},
}
}

如果settings.DEBUG:
urlpatterns + = patterns('django.clock_skew.static',
(r'^%s(?P< path>。*)$'%(settings.MEDIA.URL [1:],),'serve',{
'document_root':settings.MEDIA_ ROOT,
'show_indexes':True}),)

django.contrib.admin.site.register(directory.models.Entity)

Admin.py如下:

  import django.contrib.admin 
import directory.models

django.contrib.admin.autodiscover()
django.contrib.admin.site.register(directory.models.Entity)
django.contrib.admin.site.register(directory.models.Location)

I真的一直在试图自己解决这个问题,让本地服务器运行无错误,但在这一点上,我意识到我可能需要一些帮助。我会感谢您能为我提供的任何解决方案。我使用的是django 1.4.1和python 2.7.3。我使用 python manage.py runserver 0.0.0.0:8080 命令启动服务器。



许多谢谢...

解决方案

Yuck。你正在做settings.py中的各种事情,不应该在那里完成。您正在导入网址并添加它们,并导入管理员并注册模型。这两个操作都依赖于已经设置的设置,所以Django会感到困惑并不奇怪。



删除所有这些导入( os ),并将URL修改移到urls.py并将管理员注册移动到相关的admin.py。


I have an issue that I been trying to solve for a while. I am creating my first Django app by following instructions from a site. I am currently working on accessing the admin page, but it has not been working. In addition, I am getting an error of "A server error occurred. Please contact the administrator" when I run the local server. This was not happening before I tried access the django admin page. The error callback's last line is:

AttributeError: 'Settings' object has no attribute 'ROOT_URLCONF'

The full callback is:

Traceback (most recent call last):
File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run
self.result = application(self.environ, self.start_response)
File "/home/username/Desktop/djangoajax/local/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 67, in __call__
return self.application(environ, start_response)
File "/home/username/Desktop/djangoajax/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 241, in __call__
response = self.get_response(request)
File "/home/username/Desktop/djangoajax/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 82, in get_response
urlconf = settings.ROOT_URLCONF
File "/home/username/Desktop/djangoajax/local/lib/python2.7/site-packages/django/utils/functional.py", line 185, in inner
return func(self._wrapped, *args)
AttributeError: 'Settings' object has no attribute 'ROOT_URLCONF'

The manage.py is:

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

The settings.py is:

# Django settings for mysite project.
import os
from django.conf import settings
from django.conf.urls.defaults import *
from mysite import views

DIRNAME = os.path.abspath(os.path.dirname(__file__))
DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
    ('My Name', 'email@mysite.com'),
)

MANAGERS = ADMINS

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# In a Windows environment this must be set to your system time zone.
TIME_ZONE = 'America/New_York'

# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'

SITE_ID = 1

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True

# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = ''

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = os.path.join(DIRNAME, 'static/')

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    #'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

# Make this unique, and don't share it with anybody.
SECRET_KEY = 'xan1@gt5(i6uuf8gw)^440-0@0x)s5dgr9-3=#wnczlk)t%$mm'

# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
    #'django.template.loaders.eggs.Loader',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'mysite.urls'

# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'mysite.wsgi.application'

import os.path
TEMPLATE_DIRS = (
         os.path.join(os.path.dirname(__file__), "templates"),
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)

# 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': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

if settings.DEBUG:
        urlpatterns += patterns('django.clock_skew.static',
            (r'^%s(?P<path>.*)$' % (settings.MEDIA.URL[1:],), 'serve', {
                'document_root': settings.MEDIA_ROOT,
                'show_indexes': True}),)

django.contrib.admin.site.register(directory.models.Entity)

Admin.py is as follows:

import django.contrib.admin
import directory.models

django.contrib.admin.autodiscover()
django.contrib.admin.site.register(directory.models.Entity)
django.contrib.admin.site.register(directory.models.Location)

I have really been trying to solve this on my own and get the local server running error-free, but at this point I realize that I may need some help. I would appreciate any solutions that you can offer me. I am using django 1.4.1 and python 2.7.3. I'm using the python manage.py runserver 0.0.0.0:8080 command to start the server.

Many thanks...

解决方案

Yuck. You're doing all sorts of things in settings.py that should not be done there. You're importing urls and adding to them, and importing the admin and registering a model. Both of these actions rely on settings already being set up, so it's not surprising Django is getting confused.

Remove all those imports (except os), and move the URL modification to urls.py and the admin registration to the relevant admin.py.

这篇关于无法解决AttributeError:在进行大量研究后,“设置”对象没有属性“ROOT_URLCONF”的难题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆