Django的URL字段测试问题

2024-01-15

有人可以解释一下为什么这个网址吗http://www.nacolmeia.com.br/do/Home/oferta/EnERURLField 的 Django 生成的表单不被接受?

:)

Thanks


您是否在尝试验证该网站的同一台服务器上托管该网站?docs http://docs.djangoproject.com/en/dev/ref/models/fields/#urlfieldim

请注意,当您使用 单线程开发服务器, 验证正在提供服务的 URL 同一服务器将挂起。这不应该 对于多线程来说是一个问题 服务器。

它看起来不像表单级别的验证失败

>>> from django import forms
>>> f = forms.URLField()
>>> f.clean('http://www.nacolmeia.com.br/do/Home/oferta/EnER')
u'http://www.nacolmeia.com.br/do/Home/oferta/EnER'
>>> f.clean('sadfas')
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/dev/.virtualenvs/thepidb/lib/python2.7/site-packages/django/forms/fields.py", line 171, in clean
    self.run_validators(value)
  File "/home/dev/.virtualenvs/thepidb/lib/python2.7/site-packages/django/forms/fields.py", line 160, in run_validators
    raise ValidationError(errors)
ValidationError: [u'Enter a valid URL.']
>>> 

如果您不需要验证网站不会返回 404,请在您的 models.py 中

url = models.URLField(verify_exists=False)

edit:

在深入研究 django 源代码之后here http://code.djangoproject.com/browser/django/trunk/django/core/validators.py?rev=15504以及一些与 shell 的混淆,我仍然不确定为什么带有大写字母的 URL 会导致重定向循环。

>>> from django.core.validators import URLValidator
>>> u = URLValidator(verify_exists=True)
>>> u.__call__('http://www.nacolmeia.com.br/do/Home/oferta/EnER')
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/dev/.virtualenvs/thepidb/lib/python2.7/site-packages/django/core/validators.py", line 105, in __call__
    raise broken_error
ValidationError: [u'This URL appears to be a broken link.']
>>> u.__call__('http://www.nacolmeia.com.br/do/home/oferta/ener')
>>> 

实际引发的异常是 HTTPError:

  File "/usr/lib/python2.7/urllib2.py", line 606, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/usr/lib/python2.7/urllib2.py", line 398, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 511, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 430, in error
    result = self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 370, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 606, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/usr/lib/python2.7/urllib2.py", line 398, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 511, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 430, in error
    result = self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 370, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 596, in http_error_302
    self.inf_msg + msg, headers, fp)
HTTPError: HTTP Error 302: The HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
Found
>>> 

以下是一些讨论 HTTPError 的帖子:here http://bytes.com/topic/python/answers/27369-urllib2-upgrade-breaking-urlopen and here http://www.gossamer-threads.com/lists/python/bugs/888877

似乎它与cookie有关,但我无法提供一个很好的解释,我将把它留给其他人。

如果您不想关闭验证但不关心网址的大写,则可能有效的解决方法是覆盖表单的 clean_field 方法。

def clean_your_url_field(self):
    return self.cleaned_data['your_url_field'].lower()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django的URL字段测试问题 的相关文章

随机推荐

  • 如何在两个不同的核心数据模型之间共享实体

    我想知道如何在两个不同的核心数据模型之间共享实体 例如 我有一个 Universe 模型描述了 世界数据 以其 国家数据 另一方面 我有一个 人口 模型 它描述了 人类数据 以其 国家数据 我绝对希望将我的模型分开 提前致谢 你检查过了吗核
  • 在QML中动态创建ListModel

    当我需要在运行时创建任何 QML 组件时 我可以使用该指南 http qt project org doc qt 5 qtqml javascript dynamicobjectcreation html http qt project o
  • 输入字段值中的 HTML

    如何让 HTML 在输入字段的值中起作用 如果值中包含 HTML 它将显示为纯文本 有没有办法做这样的事情
  • 在 MATLAB 中嵌入 Python

    我正在尝试将 Python 2 6 嵌入到 MATLAB 7 12 中 我想嵌入一个用 C 编写的 mex 文件 这对于使用标量的小型简单示例来说效果很好 但是 如果以任何方式导入 Numpy 1 6 1 MATLAB 都会崩溃 我说无论如
  • Spring微服务端到端测试

    我想为使用 Spring Boot 构建的管道编写端到端测试 考虑两个微服务 A B 其中 B 消耗 A 的输出并生成 RESTful API 它们使用rabbitmq连接并依赖外部数据库 我想实现类似的目标 创建一个包含两个微服务的新项目
  • 如何从 RabbitMQ 获取旧消息?

    我使用 Bunny Ruby 发布 RabbitMQ 消息 如下所示 x publish Message n to s routing key gt mychannel 并像这样订阅 ch conn create channel x ch
  • Autofac - 构建前解决

    使用 Unity 可以在构建容器之前解决依赖关系 Autofac 也可以吗 下面的代码演示了我的场景 我需要解决ICacheRepository为了 更新 单例CacheHelper 在 Unity 中 这可以简单地完成container
  • 4 个浮动 DIV 在使用 CSS 的缩小屏幕上对称响应

    1 2 3 4 我有四个向左浮动的 DIV 上图 使用简单的 CSS float left 宽度 128 像素 高度 128 像素 当我缩小屏幕时 最后一个 DIV 正确跳到下一行 1 2 3 4 但我真正想要的是最后两个块跳到下一行 以保
  • 将数据集导出到 Excel 2007 EPPlus

    我正在尝试将数据集导出到 excel 2007 我无法使用用于在内容类型中使用 mime 类型导出的正常代码 如下所示 Response ContentType application ms excel 如果我对 xls 使用 mime 类
  • 将时间分成间隔

    我有三个输入 开始时间 End time 间隔时间 Example start time 01 00 end time 01 30 intervel time 10 min 我需要像 01 00 01 10 01 20 01 30 这样的输
  • 如何在单个查询中更改所有表前缀

    我对 mysql 非常业余 你能告诉我如何在单个查询中更改整个数据库的表前缀 我可以手动执行此操作 但更改所有表前缀非常耗时 请帮帮我 就像 isc administrator log 到 cus administrator log 意味着
  • 发出局部变量并为其赋值

    我正在初始化一个整数变量 如下所示 LocalBuilder a ilGen DeclareLocal typeof Int32 我如何访问它并为其赋值 我想做这样的事情 int a b a 5 b 6 return a b Use the
  • 在 Python 中进行自动属性分配的最佳方法是什么?这是一个好主意吗?

    而不是每次定义类时都编写这样的代码 class Foo object def init self a b c d e f g self a a self b b self c c self d d self e e self f f sel
  • php刷新当前页面?

    我有一个页面 如果设置了变量 在会话中 它会执行一个动作 然后它会取消会话 现在它必须自我更新 这就是我被困住的地方 有没有办法获取当前页面的确切 url 或者有一个函数可以做到这一点吗 so header location header
  • 使用 SVG 仅填充半颗星

    对于我正在构建的评级系统 有没有办法向这个 svg 示例添加一个 css 类 以便它只显示填充的一半星号 参见jsbin http jsbin com cifip 2 http jsbin com cifip 2 在此示例中 当前填充为黄色
  • TinyMCE 增加字体系列下拉字体大小

    有谁知道如何增加 TinyMCE 中 字体系列下拉 列表项的字体大小 Thanks 您需要创建一个自己的 css 文件并使用 tinymce 配置参数 content css your css file css 您的 css 文件必须包含以
  • gradle 存储库指向具有多个库的本地目录

    我对本地存储库的 build gradle 中的构建依赖项有疑问 即使用本地目录 dependencies compile fileTree include jar dir libs 它只解决libs目录中的依赖关系还是解决lib目录中所有
  • 获取经过身份验证的 Facebook 用户的年龄,无需进一步的权限提示

    使用 Facebook Graph API 是否可以在不首先提示用户年龄 或年龄范围 的情况下获取用户的年龄 或年龄范围 user birthday or friends birthday允许 你不能 年龄要求user birthday o
  • 我需要帮助使用 Knockout 格式化数据绑定

    我对 Knockout 相当陌生 我正在寻找格式化输出的方法 我看到了一个类似这样的例子 但我的尝试当然是行不通的 这是 jsfiddle 的链接 http jsfiddle net cezmp http jsfiddle net cezm
  • Django的URL字段测试问题

    有人可以解释一下为什么这个网址吗http www nacolmeia com br do Home oferta EnERURLField 的 Django 生成的表单不被接受 Thanks 您是否在尝试验证该网站的同一台服务器上托管该网站