django - 使用 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 %}
如果我不在主页上,导航栏将一无所获。
解决方案
推荐阅读
- javascript - I wrote javascript with ES6, but It's not working in IE. How could I change old version of javascript
- swiftui - Why can I not use append to create an array in SwiftUI
- python - 在 GPU 上对复杂变量使用 Tensorflow 优化器时出现 NotFoundError
- oracle - 尝试使用 .Net Core 3.1 和 Oracle.EntityFrameworkCore v3.19 在 Oracle DB 中保存更改()
- amazon-web-services - AWS Kinesis 如何确认已收到事件?
- c++ - 导致线程释放内存泄漏?
- regex - 忽略 ansible 正则表达式中的新行
- azure - 在 Azure 中使用来自 IOT Hub 的数据进行查询的问题
- java - 嵌入式 SWT 组未填充所有水平空间
- ruby-on-rails - Rails 6 Nginx 反向代理:提供静态文件的问题