通过同一 Django 视图中的不同路径引用的静态文件

Static files being referenced via different path in same Django view

我最近更新了我的一个视图和 URLs 以获取一个额外的参数,现在我已经完成了此操作,呈现的页面显示没有 css 或 javascript因为静态路径错误。

我显然没有正确理解静态是如何服务的,但是我不认为更改 URL confs 会改变 Django 寻找静态的路径。我对整个网站的所有静态都在一个地方。

urls.py

url(r'^fill/(.*)/(.*)/$', views.fill_survey, name='unique_getfile'),
url(r'^fill/(.*)', views.fill_survey, name='unique_getfile'),

这是我的观点...第一个块执行第一个 url 匹配,第二个块执行底部 url

def fill_survey(request, unique_url, new_name="blank"):
    """
    get file or redirect to error page
    """
    if len(unique_url) < 50:
        if unique_url == "new":
            firstlast = new_name.split(" ")
            c = Client.objects.get(firstname=firstlast[0], lastname=firstlast[1])
            survey_url_number = generate_survey(request, c.email)
            response = Survey.objects.get(number=survey_url_number['number'])
            return render(request, 'survey/survey.html', {'survey': response})
        else:
            response = Survey.objects.get(number=unique_url)
            return render(request, 'survey/survey.html', {'survey': response})

呈现的页面然后分别具有以下第一个和第二个 url 匹配的静态路径:

wwww.mysite.com/static/etc...
www.mysite.com/module_name/static/etc...

我模板中的路径如下:

<link rel="stylesheet" href="../../../static/classic/global/css/bootstrap.min.css">

为什么这些不同的 URL 会导致不同的静态路径?

提前致谢!

这是相关文档,但默认情况下 Django 仅在 /static/ 文件夹或其子文件夹中查找静态资源。如果需要,您可以在设置文件中定义静态文件目录列表。

https://docs.djangoproject.com/en/2.0/howto/static-files/

编辑:对评论的回应。 我可以看看你的模板吗?另外,我会尝试更改所有 url 以 /$.

结尾

编辑:对发布模板的回应。 我使用静态标签而不是绝对标签。即

<link rel="stylesheet" href="{% static "/css/bootstrap-3.3.7.min.css" %}">

这样,如果我们弄乱了模板的位置,我们就不需要返回并更改所有模板 .

一对夫妇想过你的 html:

关于为什么我的地址以 /$ 结尾。这是一个很好的答案。

我希望我能为您提供更清晰的答案,但请尝试 url 中的尾随 / 和模板中的前导 /{% static %}