2014-05-23 258 views
0

我使用Django,出於某種原因,無論我做什麼,包含諸如CSS之類的東西的「靜態」文件夾都未加載。我已經搜遍了所有其他問題,而且這些解決方案都沒有工作。這裏是我的settings.py文件:Django「靜態」文件夾未加載

# Django settings for liuSite project. 

import os 
BASE_DIR = os.path.realpath(os.path.dirname(__file__)) 

DEBUG = False 
TEMPLATE_DEBUG = DEBUG 

ADMINS = (
    # ('Your Name', '[email protected]'), 
) 

MANAGERS = ADMINS 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 
     'NAME': 'default_data',      # Or path to database file if using sqlite3. 
     # The following settings are not used with sqlite3: 
     'USER': 'username', 
     'PASSWORD': 'userpass', 
     # 'HOST': '',      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. 
     # 'PORT': '',      # Set to empty string for default. 
    } 
} 

# Hosts/domain names that are valid for this site; required if DEBUG is False 
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts 
ALLOWED_HOSTS = ['localhost','127.0.0.1'] 

# 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/Phoenix' 

# 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: "/var/www/example.com/media/" 
MEDIA_ROOT = '' 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
# trailing slash. 
# Examples: "http://example.com/media/", "http://media.example.com/" 
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: "/var/www/example.com/static/" 
STATIC_ROOT = '' 

# URL prefix for static files. 
# Example: "http://example.com/static/", "http://static.example.com/" 
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. 
    os.path.join(BASE_DIR, "static"), 
) 

# 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 = '-' 

# 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 = 'liuSite.urls' 

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

TEMPLATE_DIRS = (
    # 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', 
    'liuNetwork', 
) 

# 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, 
     }, 
    } 
} 

我用BitNami棧Django的設置它,如果有差別。

在此先感謝!

UPDATE:這裏是我的文件結構:

liuSite/ 
    manage.py 
    default_data 
    liuSite/ 
     __init__.py 
     settings.py 
     urls.py 
     wsgi.py 
    liuNetwork/ 
     __init__.py 
     admin.py 
     models.py 
     tests.py 
     views.py 

更新#2:我只注意到,當我訪問管理頁面,我得到這個日誌在控制檯:

---------------------------------------- 
Exception happened during processing of request from ('127.0.0.1', 58045) 
Traceback (most recent call last): 
    File "/Users/nathanapple/Library/Containers/com.bitnami.django/Data/app/python/lib/python2.7/SocketServer.py", line 582, in process_request_thread 
    self.finish_request(request, client_address) 
    File "/Users/nathanapple/Library/Containers/com.bitnami.django/Data/app/python/lib/python2.7/SocketServer.py", line 323, in finish_request 
    self.RequestHandlerClass(request, client_address, self) 
    File "/Users/nathanapple/Library/Containers/com.bitnami.django/Data/app/apps/django/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 150, in __init__ 
    super(WSGIRequestHandler, self).__init__(*args, **kwargs) 
    File "/Users/nathanapple/Library/Containers/com.bitnami.django/Data/app/python/lib/python2.7/SocketServer.py", line 640, in __init__ 
    self.finish() 
    File "/Users/nathanapple/Library/Containers/com.bitnami.django/Data/app/python/lib/python2.7/SocketServer.py", line 693, in finish 
    self.wfile.flush() 
    File "/Users/nathanapple/Library/Containers/com.bitnami.django/Data/app/python/lib/python2.7/socket.py", line 303, in flush 
    self._sock.sendall(view[write_offset:write_offset+buffer_size]) 
error: [Errno 32] Broken pipe 
---------------------------------------- 

我不知道這是不是一個單獨的問題。

謝謝!

+0

你能如何粗糙地列出你的文件系統看起來就像從項目下的根源在哪裏? – wastl

+0

http://community.bitnami.com/t/serving-media-files-django/1249/5 –

+0

@wasti - 我更新了該信息的帖子。 – Zoyt

回答

1

看了上面的設置文件STATIC_ROOT評論...您在static/文件夾放置

# 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: "/var/www/example.com/static/" 
STATIC_ROOT = '' 

一切都將被複制到STATIC_ROOT時指定的文件夾你運行manage.py colectstatic。然後,他們將被從虛擬路徑/static網站上的服務(假設Django是在調試模式下)

注意,如果DEBUG = False因爲你擁有它現在,django won't serve static files at all,你需要做的是自己。我不熟悉可能會爲您處理最後一步的bitnami。 This answer意味着它。

+0

謝謝!在本地使用'python manage.py runserver --insecure'很棒! – Zoyt

+0

我的榮幸。在你身邊看到你 – Basic

0

試試這個:

import os 
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__)) 

STATIC_ROOT = os.path.join(PROJECT_PATH, "static") 
STATIC_URL = '/static/' 
+0

謝謝,但沒有運氣。我用更多的信息更新了這篇文章,如果有幫助的話。 – Zoyt

+0

@Zoyt在你的應用程序''liuNetwork''你需要創建文件夾''靜態''manuelly。並在該靜態文件夾下創建文件夾''css'',''js'',''img''並在模板中引用:{{STATIC_URL}} css/style.css''。請讓我知道這是否工作 – doniyor

+0

這和做'python manage.py collectstatic'有什麼區別?我忘了補充說'collectstatic'將它放在'liuSite'中,而不是'liuNetwork'。但我會嘗試複製'collect static'創建的文件。 **編輯**:雅,複製這些文件不起作用。 – Zoyt

0

在settings.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
    STATIC_ROOT = os.path.join(BASE_DIR, 'static') 
    STATIC_URL = '/static/' 

    STATICFILES_DIRS = [ 
     os.path.join(BASE_DIR, "static") 
    ]