【问题标题】:TypeError in reverse resolution of URLs in production environment生产环境中 URL 反向解析中的 TypeError
【发布时间】:2013-03-12 16:33:35
【问题描述】:

关于 URL 的反向解析,我有一个仅用于生产的错误。我的模板代码如下:

{% for result in result_list %}
<div class="result">

{% if grh_out %}
<form action= "{% url 'result_show' forloop.counter0 %}" method="post">
{% endif %}

...
{% endfor %}

在 Django 开发服务器上一切正常。但是,当迁移到生产服务器时,"{% url 'result_show' forloop.counter0 %}" 行会生成 TypeError。我在生产服务器上打开debug尝试追踪错误,发现出现在...django/core/urlresolvers.py in _reverse_with_prefix

candidate = (prefix_norm + result) % dict(zip(prefix_args + params, unicode_args))

局部变量如下:

val             0
pattern         'result_show/(\\d+)'
self            <RegexURLResolver 'expofit_web.urls' (None:None) ^/>
args            (0,)
_prefix         u'/~amartino/'
possibility     [(u'result_show/%(_0)s', [u'_0'])]
unicode_args    [u'0']
possibilities   [([(u'result_show/%(_0)s', [u'_0'])], 'result_show/(\\d+)', {})]
lookup_view     u'result_show'
prefix_norm     u'/%7Eamartino/'
prefix_args     []
params          [u'_0']
result          u'result_show/%(_0)s'
defaults            {}
kwargs          {} 

生产环境中有什么不同可能会影响到这一点?

【问题讨论】:

  • forloop.counter0 的值为 0,这是不允许的。你为什么放那个柜台?
  • @catherine 在 IRC 频道上提问。似乎这是一个错误。他们说问题是我u'/%7Eamartino/'。 ~ 被解释为 %7。我还在寻找答案。

标签: django django-templates


【解决方案1】:

这是一个bug in Django 1.5。补丁应用到github的主分支。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多