【问题标题】:Static files being referenced via different path in same Django view在同一 Django 视图中通过不同路径引用的静态文件
【发布时间】:2018-09-07 23:04:37
【问题描述】:

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

我显然没有正确理解静态是如何提供的,但是我不认为更改 URL 配置会改变 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 urlconf


    【解决方案1】:

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

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

    编辑:对评论的回应。 我可以看看你的模板吗?另外,我会尝试将您所有的网址更改为以/$ 结尾。

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

    &lt;link rel="stylesheet" href="{% static "/css/bootstrap-3.3.7.min.css" %}"&gt;

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

    有几个人想到了你的 html:

    关于我为什么以/$ 结尾地址。这是一个很好的答案。 Why django urls end with a slash?

    我希望我有一个更清晰的答案,但请尝试在 url 中使用尾随 / 并在模板中使用前导 /{% static %}

    【讨论】:

    • 嗨,哈利,谢谢您的回复...我的文件在我的静态文件夹中,但问题是第二个 URL 引用的是 website.com/module_name/static 而不仅仅是 website.com/static像第一个......为什么它在相同的视图中寻找不同路径的静态文件?
    • 谢谢你会做$(我能问为什么这是必要的,这是出于安全考虑吗?)并在我的原始帖子中添加了我如何在我的模板中引用文件,我认为这是你的追求吗?
    猜你喜欢
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 2021-01-19
    • 2012-10-04
    • 2020-02-16
    • 1970-01-01
    相关资源
    最近更新 更多