gpt4 book ai didi

python - Django 中的菜单选项卡突出显示问题

转载 作者:行者123 更新时间:2023-12-01 05:41:13 24 4
gpt4 key购买 nike

View .py

def edit_report(request, report_id):
"""Edit report navigation from action needed screen
"""
user = request.user
if 'report_id' in request.session:
del request.session['report_id']
try:
member = Members.objects.get(member=user)
account_user = member.user
except:
account_user = user.id
request.session['report_id'] = report_id
request.session['account_user'] = account_user
return redirect('incident.views.new_report')

模板.html

<td class="irlist-num"><a href="{% url incident.views.edit_report list.report.id%}">{{list.report.incident_number}}{%if list.report.is_draft%} DRAFT{% endif %}</a> </td>

现在,当使用“新报告”选项卡创建新报告时,该选项卡将突出显示。

以上 View 用于编辑报告。在模板中,如果用户单击报告名称链接({% url event.views.edit_report list.report.id%}),则会让用户编辑该特定报告。由于此报告是在“新报告”选项卡下打开的,因此“新报告”选项卡会突出显示。我想将其自定义为在通过此 edit_report 打开报告时不突出显示。

我正在考虑使用report_id中的 session 来验证它,因此如果此report_id在 session 中,新报告菜单不应突出显示,但我更新了尝试过的代码,但它仍然对我不起作用。需要帮助

谢谢

最佳答案

如果没有看到 new_report View 的代码,看起来它必须根据 session.session['report_id'] 加载正确的报告信息。我认为,您不应该通过 session 传递类似的内容,而应该在调用 redirect 时将其作为参数传递给 new_report View 。 (请参阅重定向上的 django 文档链接)。请注意,您还必须编辑 View 定义才能执行此操作。

更好的是,如果您已经在 edit_report 中获得了几乎所有编辑功能,请将 edit_reportnew_report 合并到一个 View 中.

无论如何,回到所问的问题。您可以在 new_report View 中检查 session 中是否设置了 report_id(我假设您已经这样做了)。然后基于此,您可以将 RequestContext 中的变量传递给您的模板

View .py
def new_report(request):
view_template = loader.get_template('template.html')
if 'report_id' in request.session:
highlight_new_report = True
else:
highlight_new_report = False
view_context = RequestContext(request,{
'highlight_new_report' : highlight_new_report
})
return HttpResponse(view_template.render(view_context))

然后,无论菜单位于模板中的哪个位置(请注意,这很可能位于由 your_template.html 扩展的基本模板中),您都可以使用它来决定将哪个类添加到选项卡/链接。可能已经添加了一个类来突出显示它,您应该能够根据模板中现在可用的 highlight_new_report 变量来覆盖它

template.html(或模板template.html扩展)

<!-- Menu tabs -->
<a href="/new_report"
{% if highlight_new_report %}
class="highlighted_tab">
{% endif %}
</a>

编辑以获取更多信息

抱歉,应该说得更清楚。上面的代码是如何根据您的 report_id 设置类的示例,但我没有具体说明,因为我不知道您的模板会是什么样子。

如果您使用上面的代码添加了一个删除突出显示的 CSS 类,那么您可以添加另一个添加突出显示的类:

template.html(或模板template.html扩展)

<!-- Menu tabs -->
<a href="/new_report"
{% if highlight_new_report %}
class="highlighted_tab"
{% else %}
class="non_highlighted_tab">
{% endif %}
</a>

其中 highlighted_tab 是一个添加突出显示的类,而 non_highlighted_tab 是一个不添加突出显示或覆盖已应用的突出显示样式的类。

我一开始没有以这种方式编写答案的原因是,您可能已经根据当前页面添加了类似 class="active" 的内容。因此,我希望您使用如上所述的条件,将 active 类的添加限制为 highlight_report = True

关于python - Django 中的菜单选项卡突出显示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17503067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com