Я хочу, чтобы иметь возможность изменять некоторые параметры из администратора django, например: название сайта или нижний колонтитул. Я хочу иметь приложение с моделью, которая включает эти настройки, но эти настройки должны быть в одной копии. Какой лучший способ сделать это?Пользовательские настройки в администраторе django
ответ
Вы можете создать представление с @staff_member_required декоратора, оказывающего/сохраняет форму:
from django.contrib.admin.views.decorators import staff_member_required
...
@staff_member_required
def edit_config(request,):
saved = False
if request.method == "POST":
form = ConfigForm(request.POST)
if form.is_valid():
...
# Do saving here
saved = True
else:
form = ConfigForm()
...
context = {
'form': form,
'saved': saved,
}
return render_to_response('staff/edit_config.html', context, context_instance=RequestContext(request))
Использование django forms в представлении, и передать его в шаблон.
Затем в шаблоне добавьте 'admin/base_site.html', чтобы ваша форма имела внешний вид администратора. Вот пример шаблона:
{% extends 'admin/base_site.html' %}
{% load i18n adminmedia %}
{% block title %}Edit Configuration {{ block.super }} {% endblock %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/forms.css" />{% endblock %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="/admin/">{% trans "Home" %}</a> > Edit Configuration
</div>
{% endblock %}
{% block content %}
<h1>Edit Configuration</h1>
{% if saved %}
<p class="success" style="background-color:#9F9; padding: 10px; border: 1px dotted #999;">
Settings were saved successfully!
</p>
{% endif %}
<form method="POST" action="">
{% csrf_token %}
<fieldset class="module aligned">
<h2>Configuration</h2>
<div class="description"></div>
{% for field in form %}
<div class="form-row {% if field.errors %}errors{% endif %}">
{{ field.errors }}
<div class="field-box">
{{ field.label }} : {{ field }}
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
</div>
</div>
{% endfor %}
</fieldset>
<div class="submit-row">
<input type="submit" value="{% trans 'Save' %}" class="default" name="_save"/>
</div>
</form>
{% endblock %}
Вы можете использовать базу данных, INI файлы, Redis, ... для хранения конфигурации. Вы можете определить некоторые общие бэкэнд и наследовать свои пользовательские бэкэнды от него, чтобы он был гибким.
Звучит как django-constance было бы хорошо.
Хотя django-flatblocks может быть достаточно.
django-flatblocks - это простое приложение для обработки небольших текстовых блоков на сайтах. Подумайте об этом как django.contrib.flatpages просто не для целой страницы, а только для ее частей, например, для текстового текста , описывающего, что вы можете делать на сайте.
- 1. Пользовательские текстовые поля в администраторе django
- 2. ОМУ в администраторе Django?
- 3. Какое приложение django django/пользовательские настройки приложения?
- 4. где все в администраторе django?
- 5. Скрыть поля в Django администраторе
- 6. Вложенные строки в администраторе Django?
- 7. Групповой день в администраторе django?
- 8. Активность регистрации в администраторе Django - Django
- 9. Django меняет пользовательские настройки во время выполнения
- 10. Пользовательские настройки
- 11. Интерфейс администратора редактируемые настройки Django app
- 12. Пользовательские настройки в Labview
- 13. Пользовательские настройки в C#
- 14. Почему мои модели отключены в администраторе django?
- 15. Как изменить имя приложения в администраторе Django?
- 16. Как отобразить запрос, заданный в администраторе django?
- 17. Ограничить количество объектов в администраторе django
- 18. изменение названия домена в администраторе Django CMS
- 19. Как фильтровать внешние ключи в администраторе django?
- 20. Django модель класс Отсутствует в администраторе
- 21. Как реализовать Dashboard в администраторе django?
- 22. Отображение DecimalField с валютой в администраторе django
- 23. Django: Отображает только текст формы в администраторе
- 24. Как реализовать поиск в администраторе django
- 25. Почему μ показывает M в администраторе django?
- 26. Приложения не отображаются в администраторе Django
- 27. Как получить историю объекта в администраторе django?
- 28. Как предотвратить удаление суперпользователя в администраторе Django?
- 29. Как отправить пользовательские письма в Django Admin?
- 30. Создавать пользовательские «настройки сборки»
Я не хочу использовать сторонние приложения. Могу ли я сделать это без сторонних приложений? – Gr1N
Конечно, вы можете создать модель, в которой содержатся нужные вам данные, а затем создать тег шаблона, который отображает данные в соответствующих местах. Но, как вы уже указали это решение, вы, вероятно, должны уточнить свой точный вопрос/проблему. Опять же, что удерживает вас от использования стороннего приложения в этом случае? Flatblocks в значительной степени делает то, что вы хотите, и поскольку уже есть некоторые люди, использующие его, вы можете быть уверены, что он рассматривает проблемы/аспекты, которые вы не понимаете на данный момент. По крайней мере, вы могли бы взглянуть на источник, который вдохновил ваше собственное решение. – arie