渲染时捕获KeyError:u'minutes'

时间:2014-03-15 06:25:34

标签: django celery

当我尝试访问/ admin / djcelery /任务状态/在django app中它返回此错误如何解决此错误

  Template error:
  In template c:\python27\lib\site-packages\django\contrib\admin\templates\admin   \change_list.html, error at line 95
  Caught KeyError while rendering: u'minutes'
  85 :         {% endif %}
  86 :       {% endblock %}
  87 :       
  88 :       <form id="changelist-form" action="" method="post"{% if   cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %}>{% csrf_token %}

  89 :       {% if cl.formset %}
  90 :         {{ cl.formset.management_form }}
  91 :       {% endif %}
  92 : 
  93 :       {% block result_list %}
  94 :           {% if action_form and actions_on_top and cl.full_result_count %}{%   admin_actions %}{% endif %}

错误行95 !!!

  95 :            {% result_list cl %} 

  96 :           {% if action_form and actions_on_bottom and cl.full_result_count %}{% admin_actions %}{% endif %}

  97 :       {% endblock %}
  98 :       {% block pagination %}{% pagination cl %}{% endblock %}
  99 :       </form>
  100 :     </div>

  101 :   </div>

  102 : {% endblock %}

2 个答案:

答案 0 :(得分:0)

这个unicode错误在Django中很常见。您需要将从后端发送的字符串转换为字符串,或者在前端解析它。 在后端执行前端错误值的str(x)。在你的情况下minutes

答案 1 :(得分:0)

问题是pypi版本中存在一个已经在github中修复的错误。 在当前的pypi包中(格式在第64行的humanize.py中):

return ungettext(
    _('{minutes} minute ago'),
    _('{minutes} minutes ago'), minutes
).format(minutes)

这不起作用,它必须是{0}而不是{minutes}。 在github的master分支中已经修复了:

return ungettext(
    _('{minutes} minute ago'),
    _('{minutes} minutes ago'), minutes
).format(minutes=minutes)

我建议只使用github版本,你可以像这样安装最新的提交:

pip install -e "git+git://github.com/celery/django-celery.git@b6eeb8952594a7f8073901db613801f2ac544cd7#egg=django-celery"

如果您保留提交ID,它将始终安装当前头,但如果有重大更改,则使用特定提交会更安全。