Как использовать один и тот же динамический заголовок во всех представлениях Django - PullRequest
1 голос
/ 17 мая 2019

здесь у меня есть логотип и изображение, и они являются динамическими. Я хочу применить их во всех представлениях, но для этого мне нужно передать контекст site_data каждому представлению, и это стало очень трудоемким. или методы, чтобы я мог передать контекст site_data всем представлениям одновременно

models.py

class SiteSetting(models.Model):
    background_image = models.ImageField(upload_to='Background Image',default='NoImageFound.jpg')
    logo = models.ImageField(upload_to='logo',default='NoImageFound.jpg')

views.py

def view_student(request):
    students = Student.objects.all().order_by('-date')
    year = datetime.datetime.today().year
    site_data = SiteSetting.objects.all().order_by('-date')
    return render(request, 'admin/view_students.html', {'admin': students, 'site_data':site_data,'year_list': range(2016, year + 1), 'title': 'All Students'})

def add_student(request):
#....
def edit_student(request):
def delete_student(request):
def view_course(request):
def view_teahcer(request):

tempplate

{% for data in site_data %}
    {% if forloop.first %}
    <link rel="icon" href="/media/{{data.logo}}">
    {% endif %}
    {% endfor %}

1 Ответ

2 голосов
/ 17 мая 2019

Вы можете использовать context_processor

context_processors.py

from .models import SiteSetting

def get_site_data(request):
    site_data = SiteSetting.objects.all().order_by('-date')
    return {"site_data": site_data}

Добавьте этот контекстный процессор в ваш settings.py.

TEMPLATES = [
    {
        ....
            'context_processors': [
                ...
                'path.to.context_processors.get_site_data',

            ],
        },
    },
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...