0

我在 fb 或 twitter 上有通知滚动条。顶部 menu.html 直接包含在 base.html 中。不幸的是,我在那里只能使用 User 方法。是否可以不写我需要通知的每个视图?我想一次粘贴到一个视图中,并始终将它放在基础的顶部 menu.html 中!

from intarface import menu_nots

nots = menu_nots(request)

4

4 回答 4

1

有可能的。尝试编写自己的上下文处理器

def add_notifications(request):
    """ Adds Facebook notifications to the view context. """
    return {'notifications': menu_nots(request)}

接下来,将其添加到 settings.py 中的 TEMPLATE_CONTEXT_PROCESSORS 中。

于 2012-07-17T14:44:05.027 回答
0

使用消息%username% !

看法

from django.contrib import messages

messages.add_message(request, messages.INFO, 'Hello world.')
messages.debug(request, '%s SQL statements were executed.' % count)
messages.info(request, 'Three credits remain in your account.')
messages.success(request, 'Profile details updated.')
messages.warning(request, 'Your account expires in three days.')
messages.error(request, 'Document deleted.')

模板

{% if messages %}
    <ul class="messages">
    {% for message in messages %}
        <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}
于 2012-07-17T15:17:51.937 回答
0

我认为使用包含标签解决问题的最佳方法: https ://docs.djangoproject.com/en/dev/howto/custom-template-tags/#inclusion-tags

@register.inclusion_tag('menu.html')
def show_menu():
    #menu logic2

在 base.html 中:

<html>
    ...
    {% show_menu %}
    ...
</html>

包含标签的功能将在每个页面上的每个请求上运行

于 2012-07-17T14:54:19.607 回答
0

添加到 TEMPLATE 的 setting.py 部分追加到context_processors列表 ->app_name.view.base,

于 2019-06-01T10:29:42.020 回答