Django 템플릿 자체 확장, Django 관리 템플릿을 확장하려고 할 때 최대 재귀 깊이 초과

버디 샷

이 지침을 따르고 있으며 런타임 오류가 발생합니다.

maximum recursion depth exceeded while calling a Python object

문제는 내가 만들고 끝없는 템플릿 조회라는 사실에서 비롯된 것 같습니다.

더 구체적으로, base_site.html에서 contrib/admin/templates/admin내 django 프로젝트로 복사했습니다 templates/admin. 지침에 따라 프로젝트 템플릿 디렉토리가에서 참조되며 django가 .NET의 디렉토리에서 먼저 템플릿을 찾으려고 시도하는 방식으로 설정되어 TEMPLATE_DIRS있다고 확신합니다 . django 시스템 파일을 검색한다는 점 에서 요청 된 템플릿을 찾지 못한 경우에만 해당됩니다 .TEMPLATE_LOADERSTEMPLATE_DIRSTEMPLATE_DIRS

그러나 내 개인 관리 템플릿의 코드는

{% extends "admin/base_site.html" %}
{% load i18n %}

{% block branding %}
<h1 id="site-name">{% trans 'My Site Title - administration' %}</h1>
{% endblock %}

물론 장고에서 extends확장하고 싶기 때문에 진술이 있습니다 base_site.html. 하지만 사용 된 첫 번째 템플릿 로더는 django.template.loaders.filesystem.Loader이고 내 사용자 지정 파일의 이름이 django 기본 파일 (예 : "base_site.html")과 같기 때문에 로더가 내 사용자 지정 파일을 계속 반복하고 궁극적으로 위에서 설명한 런타임 오류.

이 문제를 어떻게 해결할 수 있습니까?

버디 샷

단순히 완전히 재정의로 구성된 해결 방법을 찾았습니다 base_site.html.

확장하는 대신의 base_site.html코드 contrib/admin/templates/admin/base_site.html를 내 자신 의 코드로 복사 base_site.html하고 관련 필드를 변경했습니다. 그래서 실제로 base.html대신 확장 base_site.html하고 이름 충돌이 더 이상 나타나지 않습니다.

{% extends "admin/base.html" %}
{% load i18n %}

{% block title %}{{ title }} | {% trans 'My-Custom-Site site admin' %}{% endblock %}

{% block branding %}
<h1 id="site-name">{% trans 'My-Custom-Site site administration' %}</h1>
{% endblock %}

{% block nav-global %}{% endblock %}

단점은 필요한 것보다 많은 코드가 있지만이 솔루션에 만족한다는 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관