Вам придется настроить отображение панели навигации на данные.
- Создание модели для отображения панели навигации.
from django.db import models
class Navbar(models.Model):
name = models.CharField(max_length=100)
display_order = models.IntegerField(null=True, blank=True)
Зарегистрируйте модель, чтобы пользователь мог ее изменить в админке.
from django.contrib import admin
from .models import Navbar
admin.site.register(Navbar)
Создание объектов для класса модели для каждой из требуемых ссылок навигационной панели.
Используйте content_processors для передачи объекта навигационной панели в шаблон, который содержит навигационную панель (обычно базовую. html). Эта ссылка подробно объясняет, как использовать контент-процессоры.
Как передать данные в django макеты (например, «base.html»), не предоставляя их через каждый просмотр?
Ваша функция в content_processors.py должна быть похожа на эту.
from .models import Navbar
def add_navbar_data_to_base(request):
return {
'navbar': Navbar.objects.all().order_by('display_order')
}
Теперь вы можете добавить ссылки на базу. html шаблон с помощью a для l oop, и они будут отображаться в порядке, указанном display_order, который может быть изменен администратором.
#base.html
<!DOCTYPE html>
{% load static %}
<html>
<head>
</head>
<body>
{% block nav %}
<nav class="navbar sticky-top navbar-expand navbar-light">
<ul class="navbar-nav">
{% for link in navbar %}
<li class="nav-item">
<a class="nav-link">{{ link }}</a>
</li>
{% endfor %}
</ul>
</nav>
{% endblock %}
{% block content %}
{% endblock %}
</body>
</html>
Этот код не был проверен, но общая идея должна работать.