0

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 を生成します。実稼働サーバーでデバッグをオンにしてエラーを追跡しようとしたところ、...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          {} 

これに影響を与える可能性のある本番環境の違いは何ですか?

4

1 に答える 1

0

これはDjango 1.5 のバグでした。パッチはgithubのメイン ブランチに適用され ます。

于 2013-03-14T13:42:55.270 に答える