我在django中创建了一个侧边栏,它显示了每个用户的一些报告。我添加了一个视图来列出报告并在左侧边栏中显示它们,问题是它只在一个页面中显示,而不在其他页面中显示。我在base.html中添加了侧边栏,并扩展到reporte.html以显示带有报告列表的侧边栏,但它没有显示
在第一页中显示为
但当我单击报告时,左侧栏的内容会消失
我将添加重要的函数
views.py
def insertar(request):
usuario = Usuario.objects.get(username=request.session['username'])
reportes = Reporte.objects.filter(id_usuario=usuario.id_usuario)
return render(request, 'base.html', {'reportes': reportes})
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.login, name='login'),
path('home', views.insertar, name='index'),
]
base.html
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
.sidenav {
height: 100%;
width: 250px;
position: fixed;
z-index: 1;
top: 0;
left: 0;
background-color: #21623a;
overflow-x: hidden;
padding-top: 20px;
}
.sidenav a {
padding: 6px 8px 6px 16px;
text-decoration: none;
font-size: 20px;
color: #f1f1f1;
display: block;
}
.sidenav a:hover {
color: #818181;
}
.main {
margin-left: 260px;
/* Same as the width of the sidenav */
font-size: 25px;
/* Increased text to enable scrolling */
padding: 0px 10px;
}
</style>
<title>{% block title %} {% endblock %}</title>
</head>
<body>
<div class="sidenav">
{% for i in reportes %}
<a href="home/{{i.titulo}}" class="d-block text-light p-3">{{ i.titulo }}</a>
{% endfor %}
</div>
<div class="main">
{% block body %}
{% endblock %}
</div>
</body>
reporte.html
{% extends "base.html" %}
{% block title %} Listado de Reportes {% endblock %}
{% block body %}
{% endblock %}
1条答案
按热度按时间hfyxw5xn1#
据我所知,你的意思是,你是不能够在上下文数据的左侧边栏在这个网址:
第一个月
您没有添加视图。reportes函数代码到您的问题,但我认为您没有呈现侧边栏数据(这看起来像是在您的情况:
reportes = Reporte.objects.filter(id_usuario=usuario.id_usuario)
)在报告函数的上下文中。此外,如果您需要能够访问所有模板中的任何数据,您可以使用上下文处理器获取更多信息check this
如果你不想使用上下文处理器,你也可以尝试分离成html文件。
在base.html中删除此代码,并将这些代码放入新的html文件(例如,名为sidebar.html),然后将其包含在base.html中,就像
{% include "sidebar.html" %}
将此代码添加到base.html文件中的侧边栏位置一样。同样,如果你喜欢这样,你的函数必须是这样的: