>

프로젝트의 특정 페이지에 액세스하려고 할 때 다음 오류가 발생합니다. 나는 그것이 그 라인에서 구현 한 복수 때문이라고 생각합니다. 퍼즐은 프로젝트에서 내가 가진 모든 언어에서 발생하는 것이 아니라 단 하나뿐이라는 것입니다.

콘솔

 File "\lib\site-packages\django\template\base.py", line 959, in render_annotated
    return self.render(context)
  File "\lib\site-packages\django\templatetags\i18n.py", line 149, in render
    result = translation.ungettext(singular, plural, count)
  File "\lib\site-packages\django\utils\translation\__init__.py", line 89, in ungettext
    return _trans.ungettext(singular, plural, number)
  File "\lib\site-packages\django\utils\translation\trans_real.py", line 362, in ngettext
    return do_ntranslate(singular, plural, number, 'ngettext')
  File "\lib\site-packages\django\utils\translation\trans_real.py", line 349, in do_ntranslate
    return getattr(t, translation_function)(singular, plural, number)
  File "C:\Python34\Lib\gettext.py", line 344, in ngettext
    tmsg = self._catalog[(msgid1, self.plural(n))]
  File "<string>", line 1, in <lambda>
TypeError: unorderable types: str() > int()

Template.py

{% cache cache_hourly_timeout visualizations %}
    {% blocktrans count number_views=advertisement.get_views|intcomma %}<strong>{{ number_views }}</strong> view{% plural %}<strong>{{ number_views }}</strong> views{% endblocktrans %}
{% endcache %}

  • 답변 # 1

    실제로 같은 문제가있었습니다 :

    템플릿

    {% blocktrans count count=paginator.count %}
        single text
    {% plural %}
        plural text
    {% endblocktrans %}
    
    

    실제로 설명하는 오류가 발생합니다. 우리에게는 다른 언어가 아닌 프랑스어로만 일어났습니다.

    장고 쉘에서 재생산

    django shell에서 다음 줄을 사용하여이 버그를 복제 할 수 있습니다 :

       from django.utils.translation import _trans
        _trans.ngettext("test", "tests", 0)  # 'tests'
        _trans.ngettext("test", "tests", 1)  # 'test'
        _trans.ngettext("test", "tests", 2)  # 'tests'
        _trans.ngettext("test", "tests", '')  # 'tests'
        _trans.activate('fr')  # Changing the language to French
        _trans.ngettext("test", "tests", '')
        Traceback (most recent call last):
          File "<input>", line 1, in <module>
          File "/home/vagrant/.virtualenvs/talentindex/lib/python3.4/site-packages/django/utils/translation/trans_real.py", line 369, in ngettext
            return do_ntranslate(singular, plural, number, 'ngettext')
          File "/home/vagrant/.virtualenvs/talentindex/lib/python3.4/site-packages/django/utils/translation/trans_real.py", line 356, in do_ntranslate
            return getattr(t, translation_function)(singular, plural, number)
          File "/usr/lib64/python3.4/gettext.py", line 341, in ngettext
            tmsg = self._catalog[(msgid1, self.plural(n))]
          File "<string>", line 1, in <lambda>
        TypeError: unorderable types: str() > int()
    
    

    해결 방법

    이 문제의 해결 방법은 카운터가 없음 또는 빈 문자열이 아닌지 확인하는 것입니다. 템플릿의 빈 문자열 페이지 매김 객체가 실제로 None이고 None.count가 있으면 빈 문자열이 발생하여 오류가 발생했습니다.

    {% blocktrans count count=paginator.count|default:0 %} 사용  해결합니다.

    이것이 누구에게나 도움이되기를 바랍니다.

  • 이전 PostgreSQL - postgresql - 연결 당 확장 만들기
  • 다음 ggplot2 - R에서 커널 밀도 플롯 그리드를 만드는 방법