相关疑难解决方法(0)

如何使用DRY一个活动项目渲染菜单?

我想渲染一个像这样的结构:

<a href='/home'>Home</a>
<span class='active'>Community</span>
<a href='/about'>About</a>
Run Code Online (Sandbox Code Playgroud)

社区被选定的菜单项.我有几个模板相同选项的菜单,但我不想为每个模板创建组合:

<!-- for Home template-->
        <span class='active'>Home</span>
        <a href='/comminuty'>Community</a>
        <a href='/about'>About</a>
    ...
<!-- for Community template-->
        <a href='/home'>Home</a>
        <span class='active'>Community</span>
        <a href='/about'>About</a>
    ...
<!-- for About template-->
        <a href='/home'>Home</a>
        <a href='/community'>Community</a>
        <span class='active'>About</span>
Run Code Online (Sandbox Code Playgroud)

我们有永久的菜单项列表,因此,它可以是更有效的方法 - 只创建一个菜单的通用结构,然后使用模板的必需选项呈现菜单.

例如,它可以是允许这样做的标记.

django django-templates

42
推荐指数
3
解决办法
3万
查看次数

Django - 根据当前页面突出显示导航?

我正在构建一个包含几个主要部分的webapp.每个部分都有几个子部分.我有一个main_nav.html文件,其中包含主要部分的导航.HTML使用模板中的{% include ... %}命令将其添加到基础文件中base.html.此外,我有几个子部分导航文件,每个文件都使用相同的{% include ... %}命令添加到任何给定的页面.

所有导航栏都非常简单,只带有<a href...>标签的文本.

我想强调当前主要部分和当前子部分的链接.由于这个webapp相当大,我希望以某种方式这样做而不添加特定于页面的信息.另外,我希望它随着webapp的扩展而"工作",以包含更多的部分和子部分.例如,可以通过查看正在使用的实际URL来完成吗?我希望将这可以放在导航文件本身内,而不必在每个django视图中加载一些变量或其他内容.

因此,例如,导航看起来像这样:

(main ->)            [Systems][Invoices][Work Orders][Admin]
(system sub-nav ->)  [Owner][Billing][Contacts]
Run Code Online (Sandbox Code Playgroud)

因此,如果我在该Billing部分Systems,我希望链接Systems以粗体显示,链接Billing为粗体(或其他一些简单的突出显示)

要么:

(main ->)                 [Systems][Invoices][Work Orders][Admin]
(Work-Orders sub-nav ->)  [Create New][Outstanding]
Run Code Online (Sandbox Code Playgroud)

如果我在该Outstanding部分Work Orders,则需要突出显示链接Work Orders和链接Outstanding.

有任何想法吗?

navigation django

38
推荐指数
3
解决办法
2万
查看次数

Django动态获取视图URL并检查它是否是当前页面

考虑这个基本菜单:

<ul class="nav navbar-nav">
  <li class="active"><a href="{% url 'home' %}">Home</a></li>
  <li><a href="{% url 'about' %}">About</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我试图给当前页面的链接一个活动的类,我想基于当前的url和视图的url动态地执行此操作.因此,当用户访问about页面时,该页面现在具有活动类,而主页不具有.

我想逻辑在<li></li>标签内部这样工作:

{% if request.get_full_path = "{% url 'home' %}" %}class="active"{% endif %}
{% if request.get_full_path = "{% url 'about' %}" %}class="active"{% endif %}
Run Code Online (Sandbox Code Playgroud)

但显然我不能{% ... %}互相嵌套两个.

关于如何绕过这两个的任何想法?

python django django-templates

17
推荐指数
2
解决办法
1万
查看次数

Django 模板:在同一个基础中使用多个块标签

在更改所有模板之前,我想确保我已经正确理解了这一点。我有一个带有整体布局的 base.html。这有一个 {% 块内容 %}。我的每个内容页面都扩展了“base.html”并被块标记包围。这很好用。我的视图返回呈现的内容页面,它很好地放置在布局中。

现在我也在 menubar.html 中创建了一个菜单栏,除了所选页面/内容的颜色不同之外,每个页面的菜单应该是相同的。所以它需要知道加载了什么内容。

我的 base.html 现在也有一个 {% block menubar %}

我即将打开我所有的内容模板并向它们添加以下内容:

{% include "menubar.html" %}
Run Code Online (Sandbox Code Playgroud)

然后,在 menubar.html 中,我将用块标记包围菜单。那是对的吗?我认为块系统的重点是可以通过 base.html 以某种方式控制更多的事情,而无需更改我的所有模板。

django django-templates

6
推荐指数
1
解决办法
1万
查看次数

为什么我必须在所有响应中传递RequestContext?

我想突出显示导航菜单中的当前页面.显然,当你在他们的页面上时,我需要给菜单链接一个类似'active'的类.这是一个经典问题,我已经看到了很多解决方案.我的问题是我讨厌他们所有人,并认为他们都不是很干.例如:

@register.simple_tag
def active(request, pattern):
    import re
    if re.search(pattern, request.path):
        return 'active'
    return ''

----

{% load tags %}
<div id="navigation">
    <a class="{% active request "^/about/" %}" href="/about/">About</a>
    <a class="{% active request "^/contact/" %}" href="/contact/">Contact</a>
    <a class="{% active request "^/services/" %}" href="/services/">Services</a>
</div>
Run Code Online (Sandbox Code Playgroud)

标记会获取您当前的请求和网址表达式,如果您当前在此页面上,则会返回"有效".或者,这可以使用命名视图而不是URL来完成,但原理是相同的.

我的主要问题是我的导航将在99%的视图中被调用,然而,为了获取当前请求变量,我仍然使用以下内容解析RequestContext到模板:

def contact(request):
    # snip ...
    return render_to_response(
                'contact.html',
                { 'myvar' : myvar },
                context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

为什么我需要将这个context_instance行添加到我的每个视图中,除非其中一个人可能只需要一个请求变量,以便获取当前的URL /视图以突出显示活动链接?这看起来非常潮湿,特别是对于必须在大多数django网站中的功能.我希望默认情况下包含请求,并且可以选择禁止它.我找不到在中间件中执行此操作的方法,因为在视图返回后,我无法在模板呈现之前拦截模板.

有什么建议?

navigation django django-templates django-views requestcontext

5
推荐指数
1
解决办法
1619
查看次数