gpt4 book ai didi

python - 如何将更改语言下拉列表添加到 Django(1.10) 管理?

转载 作者:行者123 更新时间:2023-11-28 22:34:12 24 4
gpt4 key购买 nike

我打算在我的管理页面中添加更改语言下拉菜单。根据 this codeHow to extend admin page .
我复制base_site.html并将其复制到 myapp/templates/admin , 我创建了一个名为 change_language.html 的 html 文件并在其中写入此代码:

{% 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' %}在此文件的顶部,会发生注释。
我添加 {% extends 'admin/base.html' %} ,再次注意到发生了。
所有提示和答案都说我们应该更改名称 <div id="user-tools">base.html 的第 25 行, 但在 Django 1.10 中,它使用不同的工作人员进入第 31 行。我 kinnda 迷路了,因为我在每个地方都读过很多不同的员工,但没有一个为我工作。有谁知道我哪里做错了吗?
这是我的中间件:

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',
]

和模板设置:

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',
],
},
},
]

最佳答案

在您的 templates/admin 文件夹中,确保文件名为 base_site.html(否则默认的 base_site 将不会被覆盖)。

确保从 django-repo 复制最新版本的文件.

最重要的是:确认您扩展了管理员 base.html(您的 base_site.html 应该以 {% extends "admin/base.html"%} 开头)

您现在可以添加表单(例如添加到页脚):

{% 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.html找到适合您表单的 block 。

您还需要添加 i18n urls到您的网址设置

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

如果您真的想使用 javascript 提交表单,您还需要获取并提交表单的 csrf token 。 django docs涵盖这个主题非常全面。

关于python - 如何将更改语言下拉列表添加到 Django(1.10) 管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39190430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com