服务器上的Django中的STATIC_ROOT

cle*_*ula 7 deployment django url webfaction django-staticfiles

当我尝试在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) 
Run Code Online (Sandbox Code Playgroud)

我的设置是:

urls.py我什么也没做,而且静态文件也没什么.

settings.py DEBUG = False

STATIC_ROOT = '/home/mydomain/webapps/static_app/'
STATIC_URL = 'http://mydomain/static/'
STATICFILES_DIRS = ()
Run Code Online (Sandbox Code Playgroud)

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))  
Run Code Online (Sandbox Code Playgroud)

index.html找不到代码的一部分

<script src="{{ STATIC_URL }}extras/h5bp/js/libs/modernizr-2.5.3.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

好吧,我遵循以下所有要点: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}))
Run Code Online (Sandbox Code Playgroud)

Yuj*_*ita 11

在开发环境中不需要的生产环境中必须发生两件事.

您必须运行manage.py collectstatic- 这会将所有静态文件收集到您的STATIC_ROOT目录中.

您必须STATIC_ROOT在STATIC_URL网址上提供目录.具体取决于您的生产设置.这甚至与django无关; 重要的是STATIC_ROOT内容可以在STATIC_URL.

假设您正在使用Apache,您可以将URL替换为目录.

Alias /static/ /path/to/my/static_root/
Run Code Online (Sandbox Code Playgroud)

如果你正在使用nginx,那就像是

location = /static/ {
    alias /path/to/my/static_root/;
}
Run Code Online (Sandbox Code Playgroud)

我刚刚意识到你正在使用webfaction,在这种情况下你设置了一个静态应用程序,它只是在你定义的URL的目标目录中提供文件.我正在尝试记住我的webfaction登录以查看确切的过程,但要弄清楚应该不难.

更新:登录webfaction; 您可以创建一个符号链接的应用程序.简单!

创建一个服务于/ YOUR_STATIC_URL /的符号链接应用程序,并将其指向/ YOUR_STATIC_ROOT /.完成!