Advanced usages¶
DRY patterns¶
To avoid hard-coding link patterns and keeping them DRY it is possible to use django standard reverse
function.
Consider an url in urls.py:
url(r'^news/$', TemplateView.as_view(template_name="news.html"), name='news')
it can be easily provided to menu declaration:
def menu(context, variables):
return [
{ 'name' : 'News',
'class' : 'news_menu_item',
'url' : reverse('news'),
'match' : r'^'+ reverse('news') + r'$',
'sub' : None,
},
]
Note
Attribute match
can be omitted in most cases. It defaults to `` r’^’+ url + r’$’,``. This is extremely helpful
in simple cases where exact match is what you want for menu element selection.
Internationalization¶
django-menus support internationalization using django ugettext
.
from django.utils.translation import ugettext_lazy as _
def menu(context, variables):
return [
{ 'name' : _('News'),
'class' : 'news_menu_item',
'url' : reverse('news'),
},
]