gpt4 book ai didi

Django 1.4 在开发服务器上提供 MEDIA_URL 和 STATIC_URL 文件

转载 作者:行者123 更新时间:2023-12-01 04:00:21 25 4
gpt4 key购买 nike

刚刚升级到 Django 1.4,并且在开发服务器上的静态和媒体文件的新“改进”服务方面遇到了严重的问题。我喜欢 Django,但是为什么他们用 STATIC_URL、STATIC_ROOT、STATICFILES_DIR 使这些文件的服务变得更加复杂,现在我完全无法理解。

我只是想在开发服务器上提供所有静态和上传的文件。经过多次实验,我让 STATIC_URL 文件正常工作,但我根本无法同时获得 MEDIA_URL 文件。

设置:

DIRNAME = os.path.dirname(__file__)
MEDIA_ROOT = os.path.join(DIRNAME, 'media/')
MEDIA_URL = '/media/'
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = ()

我已经添加了媒体和静态上下文处理器:
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
'django.core.context_processors.media',
'django.core.context_processors.static',
"django.core.context_processors.request",
'satchmo_store.shop.context_processors.settings',
'django.contrib.messages.context_processors.messages',

)

我在 url confs 中添加了:
# serve static and uploaded files in DEV
urlpatterns += staticfiles_urlpatterns()
urlpatterns + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

按照文档中的说明添加了两个 conf 设置,第一个用于静态,第二个用于媒体。

我的结构,网站是一个应用程序,静态目录按照 djangoproject 的指示放置在其中:
<myproject>
--media
--settings
--templates
--website
|->static

在模板中,我可以提供静态内容,没有问题
{{STATIC_URL}}css/style.css

但是任何上传的图片,这个使用 photologue 的图片,都不会提供,但网址是正确的:
/media/photologue/photos/cache/spawning-2_admin_thumbnail.jpg

该目录结构确实在 media/下退出

super , super 糊涂。现在这一切看起来如此复杂可笑,而我以前从未遇到过任何问题。

最佳答案

我对 Django 很陌生,我从来没有对静态内容有任何问题。

这是我的配置。我希望它可以帮助

我的文件夹结构

django-project
--mainapp
----settings.py
----wsgi.py
----[...]
--otherapp
--fixtures
--static
--templates
--manage.py
--requirements.txt

设置.py
import os, socket

DEBUG = True
TEMPLATE_DEBUG = DEBUG
MAIN_APP = os.path.abspath(os.path.dirname(__file__))
PROJECT_ROOT = os.path.abspath(os.path.join(MAIN_APP, ".."))
MY_LOCALHOST = "VirusVault.local" # this is the real name of my local machine :)

try: HOST_NAME = socket.gethostname()
except: HOST_NAME = "localhost"

[...]
if HOST_NAME == MY_LOCALHOST:
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static/')
STATIC_URL = "/static/"
MEDIA_ROOT = os.path.join(STATIC_ROOT, 'media/')
MEDIA_URL = "/media/"
else:
STATIC_ROOT = "/server/path/to/static/files"
STATIC_URL = "http://server.com/static/"
MEDIA_ROOT = "/server/path/to/static/files/media/"
MEDIA_URL = 'http://server.com/static/media/'

您需要添加 'django.contrib.staticfiles'到 INSTALLED_APPS

urls.py
if settings.HOST_NAME == settings.MY_LOCALHOST:
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
)
urlpatterns += patterns('',
(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.STATIC_ROOT, 'show_indexes': True}),
)

关于Django 1.4 在开发服务器上提供 MEDIA_URL 和 STATIC_URL 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13897982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com