2014-09-02 67 views
2

我想部署一個我建立的夾層應用程序,但我遇到了settings.py文件的許多問題。我已經嘗試了在Heroku上獲得Mezzanine應用程序的很多教程中的建議,並且它們都沒有工作,而且我現在對我做出的更改感到困惑。當我在本地運行時,沒有問題。未知的命令:'collectstatic',同時在Heroku上部署夾層應用程序

目前,我有我的網址設置爲在這個崗位:https://gist.github.com/joshfinnie/4046138

,這是我的settings.py

from __future__ import absolute_import, unicode_literals 
import os 

PROJECT_PATH = os.path.dirname(os.path.abspath(__file__)) 
STATIC_ROOT = 'staticfiles' 
STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    os.path.join(PROJECT_PATH, 'static'), 
) 

###################### 
# MEZZANINE SETTINGS # 
###################### 

# The following settings are already defined with default values in 
# the ``defaults.py`` module within each of Mezzanine's apps, but are 
# common enough to be put here, commented out, for convenient 
# overriding. Please consult the settings documentation for a full list 
# of settings Mezzanine implements: 
# http://mezzanine.jupo.org/docs/configuration.html#default-settings 

# Controls the ordering and grouping of the admin menu. 
# 
# ADMIN_MENU_ORDER = (
#  ("Content", ("pages.Page", "blog.BlogPost", 
#  "generic.ThreadedComment", ("Media Library", "fb_browse"),)), 
#  ("Site", ("sites.Site", "redirects.Redirect", "conf.Setting")), 
#  ("Users", ("auth.User", "auth.Group",)), 
#) 

# A three item sequence, each containing a sequence of template tags 
# used to render the admin dashboard. 
# 
# DASHBOARD_TAGS = (
#  ("blog_tags.quick_blog", "mezzanine_tags.app_list"), 
#  ("comment_tags.recent_comments",), 
#  ("mezzanine_tags.recent_actions",), 
#) 

# A sequence of templates used by the ``page_menu`` template tag. Each 
# item in the sequence is a three item sequence, containing a unique ID 
# for the template, a label for the template, and the template path. 
# These templates are then available for selection when editing which 
# menus a page should appear in. Note that if a menu template is used 
# that doesn't appear in this setting, all pages will appear in it. 

# PAGE_MENU_TEMPLATES = (
#  (1, "Top navigation bar", "pages/menus/dropdown.html"), 
#  (2, "Left-hand tree", "pages/menus/tree.html"), 
#  (3, "Footer", "pages/menus/footer.html"), 
#) 

# A sequence of fields that will be injected into Mezzanine's (or any 
# library's) models. Each item in the sequence is a four item sequence. 
# The first two items are the dotted path to the model and its field 
# name to be added, and the dotted path to the field class to use for 
# the field. The third and fourth items are a sequence of positional 
# args and a dictionary of keyword args, to use when creating the 
# field instance. When specifying the field class, the path 
# ``django.models.db.`` can be omitted for regular Django model fields. 
# 
# EXTRA_MODEL_FIELDS = (
#  (
#   # Dotted path to field. 
#   "mezzanine.blog.models.BlogPost.image", 
#   # Dotted path to field class. 
#   "somelib.fields.ImageField", 
#   # Positional args for field class. 
#   ("Image",), 
#   # Keyword args for field class. 
#   {"blank": True, "upload_to": "blog"}, 
# ), 
#  # Example of adding a field to *all* of Mezzanine's content types: 
#  (
#   "mezzanine.pages.models.Page.another_field", 
#   "IntegerField", # 'django.db.models.' is implied if path is omitted. 
#   ("Another name",), 
#   {"blank": True, "default": 1}, 
# ), 
#) 

# Setting to turn on featured images for blog posts. Defaults to False. 
# 
# BLOG_USE_FEATURED_IMAGE = True 

# If True, the south application will be automatically added to the 
# INSTALLED_APPS setting. 
USE_SOUTH = True 

#BLOG_SLUG = "" 

######################## 
# MAIN DJANGO SETTINGS # 
######################## 

# People who get code error notifications. 
# In the format (('Full Name', '[email protected]'), 
#    ('Full Name', '[email protected]')) 
ADMINS = (
    # ('Your Name', '[email protected]'), 
    ('Jessie Alvarez', '[email protected]'), 
) 
MANAGERS = ADMINS 

# 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 = ['*'] 

# 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. 
# On Unix systems, a value of None will cause Django to use the same 
# timezone as the operating system. 
# If running in a Windows environment this must be set to the same as your 
# system time zone. 
TIME_ZONE = 'America/Los_Angeles' 

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

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

# Supported languages 
_ = lambda s: s 
LANGUAGES = (
    ('en', _('English')), 
) 

# A boolean that turns on/off debug mode. When set to ``True``, stack traces 
# are displayed for error pages. Should always be set to ``False`` in 
# production. Best set to ``True`` in local_settings.py 
DEBUG = False 

# Whether a user's session cookie expires when the Web browser is closed. 
SESSION_EXPIRE_AT_BROWSER_CLOSE = True 

SITE_ID = 1 

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

# Tuple of IP addresses, as strings, that: 
# * See debug comments, when DEBUG is true 
# * Receive x-headers 
INTERNAL_IPS = ("127.0.0.1",) 

# 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", 
) 

AUTHENTICATION_BACKENDS = ("mezzanine.core.auth_backends.MezzanineBackend",) 

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

# The numeric mode to set newly-uploaded files to. The value should be 
# a mode you'd pass directly to os.chmod. 
FILE_UPLOAD_PERMISSIONS = 0o644 


############# 
# DATABASES # 
############# 

import dj_database_url 
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')} 


######### 
# PATHS # 
######### 

#import os 

# Full filesystem path to the project. 
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) 

# Name of the directory for the project. 
PROJECT_DIRNAME = PROJECT_ROOT.split(os.sep)[-1] 

# Every cache key will get prefixed with this value - here we set it to 
# the name of the directory the project is in to try and use something 
# project specific. 
CACHE_MIDDLEWARE_KEY_PREFIX = PROJECT_DIRNAME 

# URL prefix for static files. 
# Example: "http://media.lawrence.com/static/" 
STATIC_URL = "/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: "/home/media/media.lawrence.com/static/" 
# STATIC_ROOT = os.path.join(PROJECT_ROOT, STATIC_URL.strip("/")) 

# 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 = STATIC_URL + "media/" 

# Absolute filesystem path to the directory that will hold user-uploaded files. 
# Example: "/home/media/media.lawrence.com/media/" 
MEDIA_ROOT = os.path.join(PROJECT_ROOT, *MEDIA_URL.strip("/").split("/")) 

# Package/module name to import the root urlpatterns from for the project. 
ROOT_URLCONF = "%s.urls" % PROJECT_DIRNAME 

# 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. 
TEMPLATE_DIRS = (os.path.join(PROJECT_ROOT, "templates"),) 


################ 
# APPLICATIONS # 
################ 

INSTALLED_APPS = (
    "django.contrib.admin", 
    "django.contrib.auth", 
    "django.contrib.contenttypes", 
    "django.contrib.redirects", 
    "django.contrib.sessions", 
    "django.contrib.sites", 
    "django.contrib.sitemaps", 
    "django.contrib.staticfiles", 
    "mezzanine.boot", 
    "mezzanine.conf", 
    "mezzanine.core", 
    "mezzanine.generic", 
    "mezzanine.blog", 
    "mezzanine.forms", 
    "mezzanine.pages", 
    "mezzanine.galleries", 
    "mezzanine.twitter", 
    "gunicorn", 
    #"mezzanine.accounts", 
    #"mezzanine.mobile", 
) 

# List of processors used by RequestContext to populate the context. 
# Each one should be a callable that takes the request object as its 
# only parameter and returns a dictionary to add to the context. 
TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth", 
    "django.contrib.messages.context_processors.messages", 
    "django.core.context_processors.debug", 
    "django.core.context_processors.i18n", 
    "django.core.context_processors.static", 
    "django.core.context_processors.media", 
    "django.core.context_processors.request", 
    "django.core.context_processors.tz", 
    "mezzanine.conf.context_processors.settings", 
    "mezzanine.pages.context_processors.page", 
) 

# List of middleware classes to use. Order is important; in the request phase, 
# these middleware classes will be applied in the order given, and in the 
# response phase the middleware will be applied in reverse order. 
MIDDLEWARE_CLASSES = (
    "mezzanine.core.middleware.UpdateCacheMiddleware", 
    "django.contrib.sessions.middleware.SessionMiddleware", 
    "django.middleware.locale.LocaleMiddleware", 
    "django.contrib.auth.middleware.AuthenticationMiddleware", 
    "django.middleware.common.CommonMiddleware", 
    "django.middleware.csrf.CsrfViewMiddleware", 
    "django.contrib.messages.middleware.MessageMiddleware", 
    "mezzanine.core.request.CurrentRequestMiddleware", 
    "mezzanine.core.middleware.RedirectFallbackMiddleware", 
    "mezzanine.core.middleware.TemplateForDeviceMiddleware", 
    "mezzanine.core.middleware.TemplateForHostMiddleware", 
    "mezzanine.core.middleware.AdminLoginInterfaceSelectorMiddleware", 
    "mezzanine.core.middleware.SitePermissionMiddleware", 
    # Uncomment the following if using any of the SSL settings: 
    # "mezzanine.core.middleware.SSLRedirectMiddleware", 
    "mezzanine.pages.middleware.PageMiddleware", 
    "mezzanine.core.middleware.FetchFromCacheMiddleware", 
) 

# Store these package names here as they may change in the future since 
# at the moment we are using custom forks of them. 
PACKAGE_NAME_FILEBROWSER = "filebrowser_safe" 
PACKAGE_NAME_GRAPPELLI = "grappelli_safe" 

######################### 
# OPTIONAL APPLICATIONS # 
######################### 

# These will be added to ``INSTALLED_APPS``, only if available. 
OPTIONAL_APPS = (
    "debug_toolbar", 
    "django_extensions", 
    "compressor", 
    PACKAGE_NAME_FILEBROWSER, 
    PACKAGE_NAME_GRAPPELLI, 
) 

################### 
# DEPLOY SETTINGS # 
################### 

# These settings are used by the default fabfile.py provided. 
# Check fabfile.py for defaults. 

# FABRIC = { 
#  "SSH_USER": "", # SSH username for host deploying to 
#  "HOSTS": ALLOWED_HOSTS[:1], # List of hosts to deploy to (eg, first host) 
#  "DOMAINS": ALLOWED_HOSTS, # Domains for public site 
#  "REPO_URL": "ssh://[email protected]/user/project", # Project's repo URL 
#  "VIRTUALENV_HOME": "", # Absolute remote path for virtualenvs 
#  "PROJECT_NAME": "", # Unique identifier for project 
#  "REQUIREMENTS_PATH": "requirements.txt", # Project's pip requirements 
#  "GUNICORN_PORT": 8000, # Port gunicorn will listen on 
#  "LOCALE": "en_US.UTF-8", # Should end with ".UTF-8" 
#  "DB_PASS": "", # Live database password 
#  "ADMIN_PASS": "", # Live admin user password 
#  "SECRET_KEY": SECRET_KEY, 
#  "NEVERCACHE_KEY": NEVERCACHE_KEY, 
# } 


################## 
# LOCAL SETTINGS # 
################## 

# Allow any settings to be defined in local_settings.py which should be 
# ignored in your version control system allowing for settings to be 
# defined per machine. 
try: 
    from local_settings import * 
except ImportError: 
    pass 


#################### 
# DYNAMIC SETTINGS # 
#################### 

# set_dynamic_settings() will rewrite globals based on what has been 
# defined so far, in order to provide some better defaults where 
# applicable. We also allow this settings module to be imported 
# without Mezzanine installed, as the case may be when using the 
# fabfile, where setting the dynamic settings below isn't strictly 
# required. 
try: 
    from mezzanine.utils.conf import set_dynamic_settings 
except ImportError: 
    pass 
else: 
    set_dynamic_settings(globals()) 
+0

確切的錯誤是什麼? – 2014-09-02 11:00:42

+0

@rajasimon:部署時說'Collectstatic配置錯誤。要進行調試,運行'heroku run python manage.py collectstatic --noinput'。當我運行時,我得到'未知的命令:collectstatic' – jessietea 2014-09-02 14:36:53

+0

我有疑問。爲什麼你給collectstatic命令..只是運行runserver然後heroku會做collectstatic .. – 2014-09-02 14:39:25

回答

4

運行heroku run python manage.py help - 至少對我來說,有助於獲得更準確的描述錯誤。對我而言,問題不在於collectstatic缺失,而是環境變量未設置。這導致了沉靜的症狀出現缺失。

+0

'heroku運行python manage.py幫助檢查'是顯示我缺少環境變量的完整命令。 (增加了子命令,'檢查')。我有同樣的失眠症狀。設置不相關的環境變量固定了一切。 – 2014-11-17 19:23:54

+0

那麼......哪個變量? – 2016-12-13 20:56:29

+0

這將取決於您的特定應用程序。 – lsinger 2016-12-14 07:21:14

相關問題