Navigation in django

后端 未结 30 1489

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:36

    I know I'm late to the party. I didn't like any of the popular solutions though:

    The block method seems wrong: I think the navigation should be self contained.

    The template_tag method seems wrong: I don't like that I have to get the url from the url-tag first. Also, I think the css-class should be defined in the template, not the tag.

    I therefore wrote a filter that doesn't have the drawbacks I described above. It returns True if a url is active and can therefore be used with {% if %}:

    {% load navigation %}
    Home
  • The code:

    @register.filter(name="active")
    def active(request, url_name):
        return resolve(request.path_info).url_name == url_name
    

    Just make sure to use RequestContext on pages with navigation or to enable the request context_processor in your settings.py

    TEMPLATE_CONTEXT_PROCESSORS = (
        ...
        'django.core.context_processors.request',
    )
    

提交回复
热议问题