首页 > 解决方案 > 使用 slug 或 PK 时,视图上下文的导航栏问题。(姜戈)

问题描述

HomeView只有当我将它添加到s 上下文时, slug 才会起作用HomeView,但我只想添加一次,我不想将它添加到每个视图中,但我希望它适用于每个视图。

无论如何我可以做到这一点吗?

app2/models.py

from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse


class Model1(models.Model):
    name = models.CharField(max_length=100)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    slug = models.SlugField(unique=True, blank=False, null=False)

app1/views.py

from app2.models import Model1
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.views.generic.list import ListView


class HomeView(ListView):
    model = Model1
    ordering = ['-id']
    template_name = 'app1/home.html'
    boolean = False
    model1_slug = 'app2'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
            if Model1.objects.filter(user=self.request.user).exists():
                self.boolean = True
                user_model1 = Model1.objects.get(user=self.request.user)
                self.model1_slug = user_model1.slug
                
            else:
                self.model1_slug = 'app2'
                self.boolean = False
            context['model1_slug'] = self.model1_slug
            context['boolean'] = self.boolean
        return context

包括/navbar.html

            {% if boolean == False %}
              <li><a class="dropdown-item" href="{% url 'start-model1' %}">Start Model1</a></li>
            {% elif boolean == True  %}
              <li><a class="dropdown-item" href="{% url 'my-model1' model1_slug %}">My Model1</a></li>
              <li><a class="dropdown-item" href="{% url 'add-model2' %}">Add model2</a></li>
            {% endif %}

       

如果我不在主页上,导航栏将一无所获。

标签: djangonavbardryslugdjango-context

解决方案


推荐阅读