Django: uz(밑줄) 설정

1811 단어 djangopython
일부 로컬 설정을 응용 프로그램에 추가한 후 테스트를 실행하는 동안 다음 오류가 발생했습니다. -
ackages/django/conf/__init__.py", line 122, in configure
INTERNALERROR>     raise TypeError('Setting %r must be uppercase.' % name)
INTERNALERROR> TypeError: Setting '_' must be uppercase.
우리가 추가한 관련 설정은 다음과 같다. -
try:
    from django.utils.translation import gettext_lazy as _
except ImportError:
    _ = lambda s: s
...
...
LANGUAGES = [
    ("en", _("English")),
    ("ja", _("Japanese")),
]
그러나 이것은 우리가 테스트를 실행할 때만 발생하고 정상적인 django 실행에서는 발생하지 않습니다.breakpoint() 함수에 configure()를 추가하면 정상적인 django 실행에서 영원히 호출되지 않는다는 것을 증명합니다. (예: 통과 runserver나의 최초의 직감은pytest djangoapp의 문제라고 말했지만, 내가 발굴을 좀 한 후에 나의 생각은 약간 비뚤어졌다.
우선, 나는 이 검사를 도입한 commit_를 설정 속성으로 허용하지 않는 것을 연구했다.github에서 blame 사용하면 그것을 찾을 수 있습니다.

그래서 이것은django 프로젝트 문제 추적기에서 보았다issue #30234.이 점에서, 나는 Django가 틀렸다고 생각한다. 왜냐하면 현지화 문서가 여전히 설정에서 사용하는 예시 _ 를 표시하기 때문이다.피야.이것은 무의미하다. 만약 설정에서 사용하지 못하게 된다면, 왜 공식 문서에 표시해야 합니까?
다행히도, 이 문제에 관한 일부 지혜로운 사람들은 Django나 문서와 무관하다고 내 평론에 답했다.문제는pytest djangoapp 호출_과 통과settings.configure()를 설정 명령의 일부로 하는 것이다.
나는 내가 얼마나 어색한지 말할 수 없다.나는 먼저pytest djangoapp를 검사한 후에 평론을 문제 추적기에 발표해야 한다.

좋은 웹페이지 즐겨찾기