Navigation in django

后端 未结 30 1402

I\'ve just done my first little webapp in django and I love it. I\'m about to start on converting an old production PHP site into django and as part its template, there is a

30条回答
  •  孤城傲影
    2020-11-27 09:56

    I've seen jpwatts', 110j's, nivhab's & Marcus Whybrow's answers, but they all seem to lack in something: what about the root path ? Why it's always active ?

    So I've made an other way, easier, which make the "controller" decides by itself and I think it resolve most of the big problems.

    Here is my custom tag:

    ## myapp_tags.py
    
    @register.simple_tag
    def nav_css_class(page_class):
        if not page_class:
            return ""
        else:
            return page_class
    

    Then, the "controller" declares CSS classes needed (in fact, the most important is it declares its presence to the template)

    ## views.py
    
    def ping(request):
        context={}
        context["nav_ping"] = "active"
        return render(request, 'myapp/ping.html',context)
    

    And finally, I render it in my navigation bar:

    
    
    {% load myapp_tags %}
    ...
    
    
        Accueil
    
    
        Candidats
    
    
        Ping
    
    
        Statistiques
    
    ...
    

    So each page has its own nav_css_class value to set, and if it's set, the template renders active: no need of request in template context, no URL parcing and no more problems about multi-URL pages or root page.

提交回复
热议问题