当我尝试在webfactional上运行我的服务器上的webapp时,我在2小时内遇到了关于STATIC_URL和STATIC_ROOT的问题。
当我加载网页时,所有请求都能正常运行,除非{{STATIC_URL}}的任何链接正在运行或加载。
因此,在firebug上出现的常见错误是:
GET http://mydomain/static/extras/h5bp/js/libs/modernizr-2.5.3.min.js 500 (Internal Server Error)
我的设置是:
urls.py 我什么也没做,而且静态文件也没什么。
settings.py DEBUG = False
STATIC_ROOT = '/home/mydomain/webapps/static_app/'
STATIC_URL = 'http://mydomain/static/'
STATICFILES_DIRS = ()
views.py 查看示例
@csrf_exempt
def IndexView(request):
try:
request.user.is_authenticated()
except AttributeError:
return render_to_response('index.html',
{'request': request,},
context_instance=RequestContext(request))
return render_to_response('index.html',
{'request': request, 'profile' : request.user},
context_instance=RequestContext(request))
的index.html 未找到代码的一部分
<script src="{{ STATIC_URL }}extras/h5bp/js/libs/modernizr-2.5.3.min.js"></script>
好吧,我遵循以下所有要点: https://docs.djangoproject.com/en/1.4/howto/static-files/ 另一个: http://docs.webfaction.com/software/django/getting-started.html
我正在使用正确安装的应用,中间件,template_contexts。
如果我遗失了什么,请帮我解决。
提前致谢!
- 修改
我必须说,如果我只是更改DEBUG = True将正常工作。
因为在urls.py上我有这段代码:
if settings.DEBUG:
# static files (images, css, javascript, etc.)
urlpatterns += patterns('',
(r'^media/(?P<path>.*)/$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT}))
答案 0 :(得分:11)
在开发环境中不需要的生产环境中必须发生两件事。
您必须运行manage.py collectstatic
- 这会将所有静态文件收集到您的STATIC_ROOT
目录中。
您必须在STATIC_ROOT
网址上提供STATIC_URL
目录。具体取决于您的生产设置。这甚至与django无关;重要的是STATIC_ROOT
内容STATIC_URL
。
假设您正在使用Apache,您可以将URL替换为目录。
Alias /static/ /path/to/my/static_root/
如果你使用的是nginx,那就像
location = /static/ {
alias /path/to/my/static_root/;
}
我刚刚意识到你正在使用webfaction,在这种情况下你设置了一个静态应用程序,它只是在你定义的URL的目标目录中提供文件。我正在尝试记住我的webfaction登录以查看确切的过程,但这应该不难理解。
更新: 登录webfaction;您可以创建一个符号链接的应用程序。简单!
创建一个服务于/ YOUR_STATIC_URL /的符号链接应用程序,并将其指向/ YOUR_STATIC_ROOT /。完成!