在Django中,所有通过url申请的资源,都要在urls.py文件中进行配置。所以css,js,image等静态资源也不例外。
网上大部分给出的方案为:
settings.py中:
STATIC_ROOT=你的静态文件存放根目录
urls.py中:
urlpatterns = patterns('django.views',
url(r'^css/(?P<path>.*)$', 'static.serve',
{'document_root':settings.STATIC_ROOT+'css/'}),
url(r'^js/(?P<path>.*)$', 'static.serve',
{'document_root':settings.STATIC_ROOT+'js/'}),
url(r'^image/(?P<path>.*)$', 'static.serve',
{'document_root':settings.STATIC_ROOT+'image/'}),
)
但是这样,会出现一个灰常卵疼的问题——URL中最后的那个'/'会导致资源找不到。我们来问题重现。

在Django项目中,静态资源如CSS、JS、图片的URL配置是必不可少的。通常做法是在settings.py中配置静态文件路径,但这种方式可能导致URL结尾的'/'引起资源找不到的问题。当APPEND_SLASH设置为True时,Django会自动重定向无斜杠URL,而False则直接报404错误。为解决这个问题,可以修改urls.py,将以'css/.*'结尾的URL映射到静态资源路径,避免其他类似/xxxxcss/xxxxx的误匹配。最后的解决方案是在正则表达式中精确匹配,确保只有以'css/'开头且以'/.'结尾的URL指向静态资源。

896

被折叠的 条评论
为什么被折叠?



