Добавить кнопку на индексную страницу администратора Django - PullRequest
0 голосов
/ 06 января 2019

Я хочу добавить действие всего сайта для администратора Django, которое называется «Синхронизировать SQL-KB». Site-wide button

Для этого я скопировал локально templates/admin/index.html файл из Django и изменил его следующим образом:

...
{% if app_list %}
    <table>
        <tr>
            <td>
                <a href="sync-sql-kb/">Synchronize SQL-KB</a>
            </td>
        </tr>
    </table>
    {% for app in app_list %}
    ...

Итак, как вы можете видеть, я хочу, чтобы кнопка ссылки инициировала запрос к /admin/sync-sql-kb/.

Как зарегистрировать этот URL сейчас? Где и как реализовать функцию обработчика?

Обратите внимание, что эта ситуация, на мой взгляд, отличается от других вопросов SO тем, что действие распространяется на весь сайт, а не привязано к конкретной модели Django.

1 Ответ

0 голосов
/ 06 января 2019

Вы можете написать свои собственные представления и просто зарегистрировать их вместе с URL-адресами администратора;

urlpatterns = [
    path('admin/sync-sql-kb/', myapp.urls),
    path('admin/', admin.site.urls),
]

Тогда вы могли бы просто сделать; <a href="/admin/sync-sql-kb/">Synchronize SQL-KB</a>

Убедитесь, что ваше мнение правильно проверяет, является ли пользователь сотрудником или суперпользователем, в зависимости от того, что вам нужно. Также учтите, что вы можете назвать свои URL и использовать reverse как обычно для этого.

Я бы рекомендовал добавить вашу ссылку в блок userlinks шаблонов администратора. Прочитайте это для получения дополнительной информации; https://cheat.readthedocs.io/en/latest/django/admin.html#customize-top-right-corner-of-admin-pages

...