Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django管理媒体停止在本地提供_Django_Django Admin - Fatal编程技术网

Django管理媒体停止在本地提供

Django管理媒体停止在本地提供,django,django-admin,Django,Django Admin,我建立了一个简单的项目,在一定程度上一切都很好。我正在给项目添加内容,静态目录的路径,等等,然后突然我意识到管理媒体停止了,没有css,没有图像 查看页面的源代码会显示以下内容: link rel="stylesheet" type="text/css" href="/static/admin/css/base.css" 这是正确的,并且相同的路径适用于任何新创建的Django项目 基本上,我想以某种方式重新启用管理介质是从默认位置提供的 这是settings.py,但坦率地说,从它停止工作的

我建立了一个简单的项目,在一定程度上一切都很好。我正在给项目添加内容,静态目录的路径,等等,然后突然我意识到管理媒体停止了,没有css,没有图像

查看页面的源代码会显示以下内容:

link rel="stylesheet" type="text/css" href="/static/admin/css/base.css"
这是正确的,并且相同的路径适用于任何新创建的Django项目

基本上,我想以某种方式重新启用管理介质是从默认位置提供的

这是settings.py,但坦率地说,从它停止工作的时候起,我并没有对它做太多更改

# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = os.path.join(PROJECT_ROOT, "site_media", "media")

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/"
MEDIA_URL = "/site_media/media/"

# Absolute path to the directory that holds static files like app media.
# Example: "/home/media/media.lawrence.com/apps/"
STATIC_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static1")

# URL that handles the static files like app media.
# Example: "http://media.lawrence.com"
STATIC_URL = "/site_media/"

# Additional directories which hold static files
STATICFILES_DIRS = [
    os.path.join(PROJECT_ROOT, "site_media"),
    os.path.join(PROJECT_ROOT, "site_media", "static"),
    os.path.join(PROJECT_ROOT, "site_media", "media"),
]

# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
ADMIN_MEDIA_PREFIX = '/static/admin/'

# Make this unique, and don't share it with anybody.
SECRET_KEY = '__@9nw29=7gbj8xb5z*u6cew3x8m(&_v&jlp16!^bnpe+6@w0#'

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

ROOT_URLCONF = 'wizs.urls'

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


TEMPLATE_CONTEXT_PROCESSORS = [
    "django.core.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.request",
    "django.contrib.messages.context_processors.messages",
    'django.core.context_processors.static',
]
更新

这似乎归结为对这两个属性的处理:

1) 现在我看到的是管理媒体,而不是媒体(例如上传的图像)

2) 现在我看到上传的媒体文件,但没有看到管理媒体

STATIC_URL = "/site_media/"
ADMIN_MEDIA_PREFIX = '/site_media/static/admin/'

看起来静态URL应该是“/site\u media/static1/”而ADMIN\u media\u前缀应该是“/site\u media/static1/ADMIN/”

其他一些建议:

  • 不要将媒体根目录编译成静态根目录,因此请删除
    os.path.join(项目根目录,“站点媒体”,“媒体”),
  • 本地静态文件也不应位于站点\ U介质中。因此,删除
    os.path.join(PROJECT\u ROOT,“site\u media”,“static”),
    并将其更改为
    os.path.join(PROJECT\u ROOT,“static”),
    ,然后将该目录移到那里
  • 您应该在本地清除站点_介质,并且只在服务器上填充。(当然,对于您在本地上传的任何媒体)。但是您根本不需要在本地运行collectstatic
  • 如果完成这些操作,您可以将“static1”更改回static,然后通过nginx为整个/site\u media/文件夹提供服务,这样该文件夹中就不会有任何副本
  • 祝你好运

    以下是我的设置:

    # settings.py
    MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'site_media', 'media')
    MEDIA_URL = '/site_media/media/'
    
    STATIC_ROOT = os.path.join(PROJECT_ROOT, 'site_media', 'static')
    STATIC_URL = '/site_media/static/'
    
    ADMIN_MEDIA_PREFIX = '/site_media/static/admin/'
    
    STATICFILES_DIRS = (
        os.path.join(PROJECT_ROOT, 'static'),
    )
    
    STATICFILES_FINDERS = (
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    )
    
    # urls.py
    from django.conf import settings
    
    urlpatterns += patterns('',
        url(r'^site_media/static/(?P<path>.*)$', 'django.contrib.staticfiles.views.serve'),
        url(r'^site_media/media/(?P<path>.*)$', 'django.views.static.serve', {
            'document_root': settings.MEDIA_ROOT,
        })
    )
    
    #settings.py
    MEDIA\u ROOT=os.path.join(PROJECT\u ROOT、“site\u MEDIA”、“MEDIA”)
    媒体\u URL='/site\u媒体/MEDIA/'
    STATIC\u ROOT=os.path.join(PROJECT\u ROOT、'site\u media'、'STATIC')
    STATIC_URL='/site_media/STATIC/'
    ADMIN_MEDIA_PREFIX='/site_MEDIA/static/ADMIN/'
    静态文件\u目录=(
    join(PROJECT_ROOT,'static'),
    )
    静态文件\u查找程序=(
    “django.contrib.staticfiles.finders.FileSystemFinder”,
    “django.contrib.staticfiles.finders.AppDirectoriesFinder”,
    )
    #url.py
    从django.conf导入设置
    urlpatterns+=模式(“”,
    url(r“^site\u media/static/(?P.*)$”,“django.contrib.staticfiles.views.service”),
    url(r“^site\u media/media/(?P.*)$”,“django.views.static.service”{
    “document\u root”:settings.MEDIA\u root,
    })
    )
    
    请检查文章末尾的更新。O设法使管理员媒体出现,但随后我上传的文件消失了。似乎我找不到同时具有这两种设置的设置。我添加了所有设置,请检查它们是否适用于您。URL.py成功了。然而,我需要像以前一样拥有静态文件,而不是你如何拥有它。在Django中,使用静态文件、媒体和管理媒体的整个过程非常混乱。我希望他们能尽快简化。
    # settings.py
    MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'site_media', 'media')
    MEDIA_URL = '/site_media/media/'
    
    STATIC_ROOT = os.path.join(PROJECT_ROOT, 'site_media', 'static')
    STATIC_URL = '/site_media/static/'
    
    ADMIN_MEDIA_PREFIX = '/site_media/static/admin/'
    
    STATICFILES_DIRS = (
        os.path.join(PROJECT_ROOT, 'static'),
    )
    
    STATICFILES_FINDERS = (
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    )
    
    # urls.py
    from django.conf import settings
    
    urlpatterns += patterns('',
        url(r'^site_media/static/(?P<path>.*)$', 'django.contrib.staticfiles.views.serve'),
        url(r'^site_media/media/(?P<path>.*)$', 'django.views.static.serve', {
            'document_root': settings.MEDIA_ROOT,
        })
    )