【问题标题】:problem serving static files to sub directories将静态文件提供给子目录的问题
【发布时间】:2009-12-23 14:30:31
【问题描述】:

在开发环境中,只要将 url 模式限制在一个目录中,静态文件就可以正常提供。子目录丢失 css。例如,附加到以下 url 的模板的 css 进程:

//本地主机:8000/create/

但是这个:

//本地主机:8000/edit/2/

即使是同一个模板也不提供css。

url.py代码如下:

site_media = os.path.join( 
  os.path.dirname(__file__), 'site_media'
)

(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', 
{ 'document_root': site_media }),

查看代码为:

def edit_record(request, id):
        if request.method == 'POST':
                a=ProjectRecord.objects.get(pk=id)
                form = RecordForm(request.POST, instance=a)
                if form.is_valid():
                        form.save()
                        return HttpResponseRedirect('/')
        else:
                a=ProjectRecord.objects.get(pk=id)
                form = RecordForm(instance=a)
        return render_to_response('productionModulewire.html', {'form': form})

我错过了什么吗?

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    我能想到的只是你的模板使用相对路径来包含 CSS。

    检查您的 &lt;link rel="stylesheet" 并确保它们以 / 开头(或者是完整的 URL)

    【讨论】:

    • 谢谢。将“../site_media”更改为“/../site_media”,问题就消失了。
    • 我认为 URL 中的 "/../site_media" 翻译(或应该翻译)为 "/site_media",对吗?否则服务器极易受到各种“越界进入密码文件”类型的攻击。
    • 确实,您应该只使用 /site_media