python - django bootstrap navbar 下拉元素在使用相同的 base.html 时没有出现在其他 url
问题描述
我是 django 新手并创建了一个应用程序。我已经创建了两种模式,一个是主模式,另一个是细节。在单个 base.html 上使用引导导航栏下拉菜单时,我能够在下拉菜单中获取主记录,而当我在单击任何下拉元素时切换到不同的页面时,我没有得到下拉元素。我在主页面和详细页面中都扩展了 base.html。请帮助任何选项
下拉菜单工作 http://127.0.0.1:8000/environment/
下拉菜单不起作用 http://127.0.0.1:8000/environment/env_name
base.html
<!-- menu buttons -->
<div class="collapse navbar-collapse" id="topNavBar">
<ul class="nav navbar-nav">
<li class="active">
<li class="nav-item dropdown" >
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="glyphicon glyphicon-globe" aria-hidden="true"></span> Environment
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
{% for envmaster in all_envmaster %}
<a class="dropdown-item" href="{% url 'environment:detail' envmaster.env_name %}">{{ envmaster.env_name }}</a>
<div class="dropdown-divider"></div>
{% endfor %}
</div>
<!--<a href="{% url 'environment:index' %}">
<span class="glyphicon glyphicon-globe" aria-hidden="true"></span> Environment
</a>-->
</li>
</li>
<li class="">
<a href="#">
<span class="glyphicon glyphicon-file" aria-hidden="true"></span> Details
</a>
</li>
</ul>
详细信息.html
<!-- Loads the path to your static files -->
{% extends 'environment/base.html' %}
{% block title %}Environment Details{% endblock %}
{% block body %}
<!--<img src="{{ envmaster.env_name }}" style="width: 250px;"><br>-->
<h3>{{ envmaster.env_name }}</h3>
{% if error_message %}
<p><strong>{{ error_message }}</strong></p>
{% endif %}
{% csrf_token %}
{% for envdetail in envmaster.envdetail_set.all %}
<li>{{ envdetail.env_component }} - {{ envdetail.component_class }} - {{ envdetail.value_1 }}</li><br>
{% endfor %}
{% endblock %}
索引.html
<!-- Loads the path to your static files -->
{% extends 'environment/base.html' %}
{% block title %}Environment Details{% endblock %}
{% block body %}
{% if all_envmaster %}
<h3>Here are all Environment:</h3>
<ul>
{% for envmaster in all_envmaster %}
<li><a href="{% url 'environment:detail' envmaster.env_name %}">{{ envmaster.env_name }}</a></li>
{% endfor %}
</ul>
{% else %}
<h3>You don't have any Environment</h3>
{% endif %}
{% endblock %}
模型.py
from django.db import models
from django.urls import reverse
class Envmaster(models.Model):
env_name = models.CharField(primary_key=True, max_length=256)
env_type = models.CharField(max_length=256, blank=True, null=True)
env_owner = models.CharField(max_length=256, blank=True, null=True)
cur_release = models.CharField(max_length=256, blank=True, null=True)
class Meta:
db_table = 'ENVMASTER'
def get_absolute_url(self):
return reverse('environment:detail', kwargs={'pk': self.pk})
def __str__(self):
return self.env_name
class Envdetail(models.Model):
env_name = models.ForeignKey(Envmaster,on_delete=models.CASCADE)
env_component = models.CharField(max_length=256, blank=True, null=True)
component_class = models.CharField(max_length=256, blank=True, null=True)
value_1 = models.CharField(max_length=256, blank=True, null=True)
value_2 = models.CharField(max_length=256, blank=True, null=True)
value_3 = models.CharField(max_length=256, blank=True, null=True)
additional_info = models.CharField(max_length=256, blank=True, null=True)
class Meta:
db_table = 'ENVDETAIL'
def __str__(self):
return self.env_component
视图.py
from django.views import generic
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.urls import reverse_lazy
from django.shortcuts import render, get_object_or_404
from .models import Envmaster
class IndexView(generic.ListView):
template_name = 'environment/index.html'
context_object_name = 'all_envmaster'
def get_queryset(self):
return Envmaster.objects.all()
class DetailView(generic.DetailView):
model = Envmaster
template_name = 'environment/detail.html'
网址.py
urlpatterns = [
re_path(r'^$', views.IndexView.as_view(), name="index"),
#/environment/env_name/
re_path(r'^(?P<pk>[\w\-]+)/$', views.DetailView.as_view(), name='detail'),
解决方案
在浏览不同的帖子并尝试时,我在应用程序级别创建了一个上下文文件,以便在初始化类对象后,它应该保留导航栏中的值
from .models import Envmaster
def show_env_menu(context):
env_menu = Envmaster.onjects.all()
return {'env_menu': env_menu}
推荐阅读
- listview - Xamarin.Forms 列表视图。我可以知道每行的高度吗?
- javascript - 使用 href 设置 URL 然后重新加载。在资源管理器中工作,但不在 Chrome 中
- c# - 显示每个对象的名称
- sql - 计算给定 ID 具有特定值的次数,然后使用算术运算符
- spring-boot - 如何为此代码编写具有 100% 代码覆盖率的 Junit 测试?
- sql-server - SSIS活动日志事务问题
- ios - 使用 safeAreaLayoutGuide 时 IQKeyboardManager 不起作用
- java - 我的测试中奇怪的空指针异常通过了一个但没有通过其他
- mysql - 如何从另一个表中填充单元格值?
- salesforce - 显示从控制器方法返回的值