2011-09-05 38 views
1

我已经配置,像这样我的静态设置:Django的:STATIC_URL增加了应用程序的名字到url

STATIC_ROOT = os.path.join(SITE_ROOT, 'static') 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (
    ('js', os.path.join(STATIC_ROOT, 'js')), 
    ('css', os.path.join(STATIC_ROOT, 'css')), 
) 

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

而这些在我urls.py

urlpatterns = patterns('', 
    url(r'^login/?$', login, name='login'), 
    url(r'^logout/?$', logout_then_login, name='logout'), 

    url(r'^profile/(?P<user_id>\d+)$', 'profiles.views.detail'), 
    url(r'^profile/edit$', 'profiles.views.edit'), 
) 

urlpatterns += staticfiles_urlpatterns() 

它非常适用于网址localhost:8000/login,但当我到达localhost:8000/profile/edit网站(由我的profiles应用处理)时,{{ STATIC_URL }}将所有路径从/static/...更改为/profile/static/...,因此我的JavaScript和样式表不是找到了更多。

我做错了什么?

编辑:这将是我base.html

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Neighr{% block title %}{% endblock %}</title> 
     <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
     <script type="text/javascript" src="{{ STATIC_URL }}js/jquery.min.js"></script> 
     {% block script %}{% endblock %} 
    </head> 
    <body> 
     {% block content %}{% endblock %} 
    </body> 
</html> 
+0

'staticfiles_urlpatterns()'?它是什么? –

+0

@ Thibault J:根据[this](https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-in-development),为静态文件提供服务在开发环境中。 – Lanbo

+0

正如你给出的链接所述,这只有在你不使用django内置服务器时才有效。否则,静态文件将自动提供。你在使用哪台服务器? –

回答

2

由于您使用内置的研究与开发服务器Django的,尝试从urls.py删除以下行:

urlpatterns += staticfiles_urlpatterns() 

在生产中,最好不要用django提供静态文件,所以使用collectstatic命令。

编辑

如果settings.py,尝试这样的事情:

STATIC_ROOT = os.path.join(os.path.dirname(__file__), '../../static') 
STATIC_URL = '/static/' 
+0

这仍然会将'/ profile'添加到静态路径,所以不能解决我的问题。 – Lanbo

+0

'SITE_ROOT'的价值是什么? –

+0

......那个不在我的'settings.py'中,我应该设置它吗? – Lanbo

相关问题