1

내 관리자 페이지에서 변경 언어 드롭 다운을 추가 할 계획입니다. 및 How to extend admin page에 따라 입니다.장고 (1.10) 관리자에게 언어 변경 드롭 다운을 어떻게 추가할까요?

{% load i18n %} 
/{% trans 'Change language' %} 
<form action="/i18n/setlang/" method="post" style="display: inline;"> 
    <div style="display: inline;"> 
    <select name="language" onchange="javascript:form.submit()"> 
     {% for lang in LANGUAGES %} 
     <option value="{{ lang.0 }}"{% ifequal LANGUAGE_CODE lang.0 %} selected="selected"{% endifequal %}>{{ lang.1 }}</option> 
     {% endfor %} 
    </select> 
    </div> 
</form> 

나는 일에 주목,이 파일의 상단에 {% extends 'admin/base_site.html' %}을 추가
는 나는 내가 change_language.html라는 이름의 HTML 파일을 생성하고이 코드를 작성, base_site.html 복사 myapp/templates/admin에 복사합니다.
나는 또한 {% extends 'admin/base.html' %}을 추가합니다.
모든 힌트와 대답에 따르면 <div id="user-tools">base.html의 이름으로 변경해야하지만 Django 1.10에서는 다른 직원과 함께 31 행으로 이동합니다. 메신저는 잃어 버렸습니다. 왜냐하면 저는 많은 사람들이 저를 위해 일하는 곳마다 다른 많은 직원들을 읽었기 때문입니다. 어떤 일을 잘못했는지 알 수 있습니까? 난 당신이 당신이 인터넷에서 발견 한 모두 답변을 혼합하는 추측

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [ 
     os.path.join(BASE_DIR,'templates'), 
    ], 
    'APP_DIRS': True, 
    'OPTIONS': { 
     'context_processors': [ 
      'django.template.context_processors.debug', 
      'django.template.context_processors.request', 
      'django.contrib.auth.context_processors.auth', 
      'django.contrib.messages.context_processors.messages', 
     ], 
    }, 
}, 
] 
+0

미들웨어 및 템플릿 엔진을 게시 할 수 있습니까? – rfkortekaas

+0

물론입니다. i 업데이트 내 질문 귀중한 @rfkortekaas –

답변

1

:

MIDDLEWARE = [ 
'django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.locale.LocaleMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 

그리고 템플릿 설정 :
여기 내 미들웨어이다. 그 중 하나는 관리 템플릿에서 몇 개의 파일을 복사 및 변경하여 프로그램 참조에서 효과적으로 재정의합니다. 두 번째 템플릿은 관리자의 템플릿을 확장합니다. 그 중 하나만 완벽하게 구현해야합니다.

+0

당신은 더 구체적 수 있습니까? base.html 파일을 복사하려면 어디에서 복사해야합니까? 어떻게 작동합니까? –

+1

여기에 base.html https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/base.html – navit

+1

의 코드가 있습니다. 첫 번째 링크는이 코드를 복사하고 25 행을 변경하는 것이 좋습니다. 또는이 예제에서 28) tp는 새 html 파일 (change_language.html)을 포함합니다. – navit

0

템플릿/admin 폴더에서 파일 이름이 인 base_site.html인지 확인하십시오 (그렇지 않으면 기본 base_site는 덮어 쓰지 않습니다).

django-repo에서 파일의 최신 버전을 복사하십시오.

에서 가장 중요한 :

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

{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %} 

{% block branding %} 
<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1> 
{% endblock %} 

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

{% block footer %} 
<div id="footer"> 
    <form action="/i18n/setlang/" method="post"> 
    {% csrf_token %} 
     <select name="language"> 
      {% for lang in LANGUAGES %} 
       <option value="{{ lang.0 }}" 
        {% ifequal lang.0 request.LANGUAGE_CODE %} 
         selected="yes" 
        {% endifequal %} 
       >{{ lang.1 }}</option> 
      {% endfor %} 
     </select> 
     <input type="submit" value="{% trans 'Change language' %}" /> 
    </form> 
</div> 
{% endblock %} 

: 당신이

이제 (바닥 글에 예를 들어) 양식을 추가 할 수 있습니다 (귀하의 base_site.html이 {% extends "admin/base.html" %} 시작해야합니다)에 관리자의 base.html을 확장 확인 양식에 적합한 것으로 보이는 블록을 찾으려면 base.html을 참조하십시오.

또한, URL 설정

url(r'^i18n/', include('django.conf.urls.i18n')),

을에 i18n urls을 추가해야 할 것입니다 그리고 당신은 정말 당신은 또한 얻을과의 CSRF 토큰을 제출해야합니다 자바 스크립트를 사용하여 양식을 제출하려면 형태. django docs은이 주제를 매우 포괄적으로 다루고 있습니다.