侧边栏django无法正确扩展

nzkunb0c  于 2023-01-10  发布在  Go
关注(0)|答案(1)|浏览(101)

我在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 %}
hfyxw5xn

hfyxw5xn1#

据我所知,你的意思是,你是不能够在上下文数据的左侧边栏在这个网址:
第一个月
您没有添加视图。reportes函数代码到您的问题,但我认为您没有呈现侧边栏数据(这看起来像是在您的情况:
reportes = Reporte.objects.filter(id_usuario=usuario.id_usuario))在报告函数的上下文中。
此外,如果您需要能够访问所有模板中的任何数据,您可以使用上下文处理器获取更多信息check this
如果你不想使用上下文处理器,你也可以尝试分离成html文件。

<div class="sidenav">
        {% for i in reportes %}
        <a href="home/{{i.titulo}}" class="d-block text-light p-3">{{ i.titulo }}</a>
        {% endfor %}
 </div>

在base.html中删除此代码,并将这些代码放入新的html文件(例如,名为sidebar.html),然后将其包含在base.html中,就像{% include "sidebar.html" %}将此代码添加到base.html文件中的侧边栏位置一样。
同样,如果你喜欢这样,你的函数必须是这样的:

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})

相关问题