设置静态根 Django Dreamhost 的正确方法
The Proper Way to Setup Static Roots Django Dreamhost
我已经尝试了数十种方法来找到在我的 dreamhost 主机上提供静态文件的最有用的方法。 到目前为止,只有一种方法对我有用,那就是使 STATIC_URL
成为超级 link。 这可能会奏效,但在某种程度上会成为一个动态障碍,尤其是收集我的静态文件时。我正在使用 passenger_wsgi 来托管我的网站。除了提供静态文件的方式外,其他一切都正常工作。 我怎样才能最有效地提供我的静态文件?请包括我应该在哪里放置我的静态文件,STATIC_URL
、STATIC_ROOT
和 urlpatterns
答案。 Python 2.7 Django 1.9
我当前的站点结构:
home/user/domain.com/
/env
/MyDjangoProject
/tmp
restart.txt
/public
/static_in_pub
/static_root
/css
/js
/media
passenger.wsgi.py
我的 settings.py 静态根:
STATIC_URL = 'http://www.domain.com/static_in_pub/static_root/'
STATIC_ROOT = os.path.join(BASE_DIR, 'public/static_in_env/static_root')
MEDIA_URL = 'http://www.domain.com/static_in_pub/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'public/static_in_env/media')
print 'Settings.py STATIC_ROOT: %s' % (STATIC_ROOT)
print 'Settings.py MEDIA_ROOT: %s' % (MEDIA_ROOT)
STATICFILES_DIRS = (
os.path.join(os.path.dirname(BASE_DIR), 'static_in_pro/our_static'),
os.path.join(os.path.dirname(BASE_DIR), 'static_in_pro/media'),
#'/var/www/static/',
)
我在 urls.py 中的静态 urlpatterns:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
@Daniel-Roseman 的回答是正确的。您应该像我在问题中那样直接提供静态文件。使用 Apache 文件直接 link: STATIC_URL = 'http://www.domain.com/static_in_env/static_root'
但是根据我自己的经验,我发现最好将静态文件保存在上面的目录中 public 并从那里提供它们。
像这样:
home/user/domain.com/
/env
/MyDjangoProject
/tmp
restart.txt
/static_in_env #Static in here instead of in public
/static_root
/public
passenger.wsgi.py
我已经尝试了数十种方法来找到在我的 dreamhost 主机上提供静态文件的最有用的方法。 到目前为止,只有一种方法对我有用,那就是使 STATIC_URL
成为超级 link。 这可能会奏效,但在某种程度上会成为一个动态障碍,尤其是收集我的静态文件时。我正在使用 passenger_wsgi 来托管我的网站。除了提供静态文件的方式外,其他一切都正常工作。 我怎样才能最有效地提供我的静态文件?请包括我应该在哪里放置我的静态文件,STATIC_URL
、STATIC_ROOT
和 urlpatterns
答案。 Python 2.7 Django 1.9
我当前的站点结构:
home/user/domain.com/
/env
/MyDjangoProject
/tmp
restart.txt
/public
/static_in_pub
/static_root
/css
/js
/media
passenger.wsgi.py
我的 settings.py 静态根:
STATIC_URL = 'http://www.domain.com/static_in_pub/static_root/'
STATIC_ROOT = os.path.join(BASE_DIR, 'public/static_in_env/static_root')
MEDIA_URL = 'http://www.domain.com/static_in_pub/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'public/static_in_env/media')
print 'Settings.py STATIC_ROOT: %s' % (STATIC_ROOT)
print 'Settings.py MEDIA_ROOT: %s' % (MEDIA_ROOT)
STATICFILES_DIRS = (
os.path.join(os.path.dirname(BASE_DIR), 'static_in_pro/our_static'),
os.path.join(os.path.dirname(BASE_DIR), 'static_in_pro/media'),
#'/var/www/static/',
)
我在 urls.py 中的静态 urlpatterns:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
@Daniel-Roseman 的回答是正确的。您应该像我在问题中那样直接提供静态文件。使用 Apache 文件直接 link: STATIC_URL = 'http://www.domain.com/static_in_env/static_root'
但是根据我自己的经验,我发现最好将静态文件保存在上面的目录中 public 并从那里提供它们。
像这样:
home/user/domain.com/
/env
/MyDjangoProject
/tmp
restart.txt
/static_in_env #Static in here instead of in public
/static_root
/public
passenger.wsgi.py