通过同一 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:
因为它不是以 /
开头,所以它指向当前文件夹中的 a 文件夹。
使用 /
它指向当前网站根目录的路径。
参见 https://www.w3schools.com/html/html_filepaths.asp
关于为什么我的地址以 /$
结尾。这是一个很好的答案。
我希望我能为您提供更清晰的答案,但请尝试 url 中的尾随 /
和模板中的前导 /
或 {% static %}
。
我最近更新了我的一个视图和 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:
因为它不是以
/
开头,所以它指向当前文件夹中的 a 文件夹。使用
/
它指向当前网站根目录的路径。 参见 https://www.w3schools.com/html/html_filepaths.asp
关于为什么我的地址以 /$
结尾。这是一个很好的答案。
我希望我能为您提供更清晰的答案,但请尝试 url 中的尾随 /
和模板中的前导 /
或 {% static %}
。