gpt4 book ai didi

Django 将斜杠附加到 OpenShift 上的静态文件 URL

转载 作者:行者123 更新时间:2023-12-03 17:57:06 24 4
gpt4 key购买 nike

我正在尝试使用 Python 3.3 卡带在 OpenShift 上部署 Django 1.6 应用程序,但我遇到了静态文件问题。我在 OpenShift IRC channel 、教程/模板 ( for example ) 和以前的 StackExchange 问题 ( for example ) 上取得了部分成功,但没有任何东西可以完全解决问题。

当我通过 URL(例如“mydomain.com/static/stylesheet.css”或“mydomain.com/static/icons/cog.svg”)请求静态内容时,我可以完美地看到它们。当静态文件用作图标的 SVG 数据时,它们显示良好。只有在链接到样式表时我才会遇到问题。我使用以下内容在我的模板中包含 CSS:

<link type="text/css" rel="stylesheet" href={% static "stylesheet.css" %}/>

我已经加载了用 {% load staticfiles %} 设置的静态文件标签。 Django(我假设它是 Django,而不是 Apache)不是在 /static/stylesheet.css 中查看样式表,而是在 /static/stylesheet.css/ 中查找它(注意结尾的斜杠)。这会导致请求失败并返回 404 状态代码。当我使用其他文件扩展名(我尝试过 .txt.css.svg)或链接到文件时,也会发生同样的事情包含在 static 的子目录中。只有在这种情况下,才会附加一个额外的尾部斜杠。

据我了解,如果 URL 不匹配 urls.py 中定义的任何模式,Django 会在 URL 后附加一个尾部斜杠。是否可以在 OpenShift 上配置 Apache,以便它直接处理对 /static/* 形式的 URL 的所有请求?我在 wsgi 目录中有一个 .htaccess 文件,其中包含命令

Rewrite Engine On
Rewrite Rule ^application/static/(.+)$ /static/$1 [L]

但这并不能解决问题。我也尝试过仅对样式表使用重写规则以及使用 Alias 进行一些操作,但也没有成功。

Django 是否应该获取对这些静态文件的请求?我已确认 DEBUG 在我的 settings.py 文件中被设置为 False,并且没有提及 django.views。 static.serve 在我的 urls.py 文件中。以下是 settings.py 的相关部分:

STATIC_URL = '/static/'
if 'OPENSHIFT_REPO_DIR' in os.environ:
STATIC_ROOT = os.path.join(os.environ.get('OPENSHIFT_REPO_DIR'),
'wsgi', 'static')
else:
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')

我没有为 STATICFILES_DIRSSTATICFILES_FINDERS 设置值,因为目前我只处理在 STATIC_ROOT 中找到的静态文件。 OpenShift 项目看起来像

~/app-root/runtime/repo/wsgi/
.htaccess
application
openshift/
settings.py
manage.py
#And so on.
static/
stylesheet.css
icons/
cog.svg
#More icons here.

这是我第一次尝试部署,我被困在这个绊脚石上。有谁知道我做错了什么?

最佳答案

代替 href={% static "stylesheet.css"%},试试 href="{% static 'stylesheet.css' %}"

关于Django 将斜杠附加到 OpenShift 上的静态文件 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24793504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com