python - 正斜杠破坏 URL.py

标签 python django nitrousio

我是新手,请温柔一点。我正在使用 Nitrous.io 和 Django 1.5。我遇到了一些奇怪的现象,并正在寻找一些解释。我不确定是中间件还是我的新闻造成了问题(我的钱花在我的新闻上)。抱歉,蓝色的曲线我不确定这种事情的政策是什么。

这是我的 urls.py:

 urlpatterns = patterns('',
   url(r'^church$', church),
 ) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

在您告诉我不需要添加该静态代码段之前,请注意这是我可以正确提供静态文件的唯一方法。

这是我的 settings.py 的相关部分:

 DEBUG = True
 INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'StructureBuilder', #this is the name of my app
'django.contrib.admin',
 )

 MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
  )


 STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static')
 STATIC_URL = 'MySite/static/'

在您告诉我我的 STATIC_URL 错误或者我不需要 STATIC_ROOT 之前,请注意这是我能够获取静态数据的唯一方法文件才能得到正确的服务。

这就是发生的事情:

如果我向 urlpatterns 添加正斜杠,例如 url(r'^church/$', Church), 正则表达式会检查,但我的静态文件均未加载。

enter image description here enter image description here

如果我删除正斜杠(例如url(r'^church$', Church),并重新加载页面,由于正斜杠,我将收到 404 错误。我是印象中常见的中间件(我已安装)处理正斜杠 Link

enter image description here

删除正斜杠可以完美加载页面:

enter image description here

enter image description here

显然,这是不希望的。我可以使用它,但是任何正斜杠都会发生这种情况,而不仅仅是当它位于正则表达式末尾时。这成为一个问题,因为它还会将当前页面添加到我所有静态文件的开头。

我的问题:为什么常见的中间件不能正确处理正斜杠?我的静态文件服务配置到底有什么问题,上面的方法是我能够让它工作的唯一方法?

最佳答案

如果 STATIC_URL 前面没有斜杠,浏览器会将其视为相对 URL。

正如您在 normalize.css 的屏幕截图中看到的,失败的/church/是您的 STATIC_URL 的前缀。在这些文件正在工作的其他请求中,/church/不存在。

更改:

STATIC_URL = 'MySite/static/'

STATIC_URL = '/MySite/static/'

这将导致静态内容的请求永远不会受到 URL 中斜杠的影响,因为它们始终从服务器的根目录开始。

关于python - 正斜杠破坏 URL.py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20817170/

相关文章:

python - Google App Engine python,GQL,仅从数据存储中选择一列

django - PayPal Rest API - 列出计费协议(protocol)中的交易

ruby-on-rails - 无法在 Heroku 托管的 Postgres 数据库上运行 Ruby on Rails 测试

python - future 内部循环的状态始终处于待定状态

Python 将字典转换为数据框失败

python - Django REST API,自动化文档?

Mysql 和 Nitrious IO

ruby - 有谁知道如何从 nitrous.io 下载项目?

python - Python中最长的回文

Django Form 转换为 Django Rest Framework Serializer