python – Как переопределить шаблоны Django-CMS –

Создана система комментариев

Написана система комментирования записей. На странице поста под текстом записи выводится форма для отправки комментария, а ниже — список комментариев. Комментировать могут только авторизованные пользователи. Работоспособность модуля протестирована.

Кеширование главной страницы

Список постов на главной странице сайта хранится в кэше и обновляется раз в 20 секунд.

Тестирование кэша

Написан тест для проверки кеширования главной страницы. Логика теста: при удалении записи из базы, она остаётся в response.content главной страницы до тех пор, пока кэш не будет очищен принудительно.

Python – django: не можете переопределить шаблоны администратора, если они уже переопределены? –

Чтобы добавить некоторый контент в административное представление Django модели, я хочу переопределить шаблон change_form.html. Согласно документации мне необходимо создайте файл change_form.html в папке /project-path/templates/admin/appname/modelname/. Конечно, мне нужно убедиться, что этот путь также доступен в TEMPLATE_DIRS. Такой файл может выглядеть так:

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

{% block after_field_sets %}
SOME CONTENT
{% endblock %}

Однако я использую django-guardian для получения разрешений на объекты. Это приложение Django также переопределяет change_form.html (что прекрасно работает – похоже, соответствующий источник здесь), но Django не берет файл расширения моего шаблона (т.е.” НЕКОТОРЫЙ КОНТЕНТ “из примера выше не отображается). Блоки / части, которые я хочу переопределить, не являются не теми же, которые переопределяет django-guardian, и в конце концов я хочу добавить в change_form.html дополнения к django-guardion и моего шаблона.

Что я здесь не так делаю? И возможно ли вообще иметь несколько приложений, перекрывающих шаблон администратора?

Если это интересно, это моя TEMPLATE_LOADERS настройка:

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader'
)

Кроме того, django-guardian является последним приложением в массиве INSTALLED_APPS.

Лучший ответ

Похожее:  Email Authentication and Verification using Node.js and Firebase | Engineering Education (EngEd) Program | Section

Одним из возможных решений, по-видимому, является явное определение цепочки наследования путем ссылки и переопределения шаблона django-guardian (определенного здесь), а не общий текст Джанго change_form.html. Так что вместо использования

{% extends "admin/change_form.html" %}

В начале моего пользовательского шаблона мне нужно будет использовать

{% extends "admin/guardian/model/change_form.html" %}

Также мне нужно расширить мою модель подкласса GuardedModelAdmin, чтобы явно использовать мой собственный файл шаблона в качестве шаблона формы изменения:

class MyModel(GuardedModelAdmin):
    change_form_template = 'admin/appname/mymodel/change_form.html'

Это работает, но добавляет четкую зависимость к шаблону и модели. Конечно, модель в любом случае имеет эту зависимость, но мне было бы интересно, если бы было решение, которое ссылается только на значение по умолчанию change_form.html – однако, я подозреваю, что это не совсем возможно.

Python – как переопределить шаблоны django-cms –

Во-первых, если он перенаправляет вас на страницу входа, это, скорее всего, связано с тем, что там еще нет контента. Основываясь на вопросе, я предполагаю, что это новая установка без страниц, поэтому вам нужно будет войти в систему, создать свои страницы, а затем вы должны загрузить ее без перенаправления администратора.

Что касается переопределения шаблонов, он работает так же, как и для любого шаблона django или приложения.

Если вы хотите использовать настраиваемый шаблон, вы просто создаете свою собственную версию по тому же пути, что и исходный, но в одном из ваших собственных каталогов шаблонов.

Например, в моем проекте есть каталог, в котором я переопределяю шаблоны CMS;

/project/myapp/templates/cms/toolbar/plugin.html

То, что вы можете видеть в приложении CMS, живет по тому же пути к шаблону;

https://github.com/divio/django-cms/tree/release/3.3.x/cms/templates/cms/toolbar

Если у вас есть шаблоны, которые вы хотите сделать доступными в качестве шаблонов страниц для CMS, тогда есть параметр CMS_TEMPLATES, который вы добавляете таким образом;

CMS_TEMPLATES = (
    ('home.html', 'Homepage'),
    ('article.html', 'Article'),

    ('blogs/entry_form.html', 'Blogs Competition Entry Form'),
)

Дополнительная проверка при создании поста: : «unittest в django: тестирование views»

Проверьте, что если при создании поста указать группу, то этот пост появляется

Похожее:  Личный кабинет дошкольника Пермь: вход для родителей и воспитателей

Проверьте, что этот пост не попал в группу, для которой не был предназначен.

Проверка namespase:name и шаблонов: «unittest в django: тестирование views»

Напишите тесты, проверяющие, что во view-функциях используются правильные html-шаблоны.

Протестируйте проект yatube

Большую часть заданий вы выполнили в течение уроков, все они будут проверены. Если вы что-то не успели сделать — самое время этим заняться.Ниже перечислены все тесты, которые нужно было сделать в уроках и отмечено, какие ещё тесты нужно написать.

Рекомендации

Ваша задача — написать работающие и оптимизированные тесты.

По возможности применяйте методы setUp или setUpClass.

Однотипные тесты пишите через subTest.

Необязательные задания:

Тестирование forms: «unittest в django: тестирование forms»

В проекте Yatube напишите тесты, которые проверяют, что

Тестирование контекста: «unittest в django: тестирование views»

Проверьте, соответствует ли ожиданиям словарь context, передаваемый в шаблон при вызове.

Финальное задание спринта

Осталось добавить в проект систему подписки на авторов и создать ленту их постов.Задача вам знакома: создайте модель, напишите view-функцию, добавьте в urls.py новые пути, подготовьте шаблоны.

Модель Follow должна иметь такие поля:

Напишите view-функцию страницы, куда будут выведены посты авторов, на которых подписан текущий пользователь.Ещё две view-функции нужны для подписки на интересного автора и для того, чтобы отписаться от надоевшего графомана:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector