【问题标题】:Pass context variables from two view functions to the same template将上下文变量从两个视图函数传递到同一个模板
【发布时间】:2014-06-08 00:23:41
【问题描述】:

我试图将值从两个函数呈现到一个 html,但我不确定如何执行此任务。 我想在这两个函数中都使用“返回渲染”?应该如何在 urls.py 中读取这两个函数? 现在我如下所示,当然 TopAlerts 没有返回任何内容。有什么建议吗?

views.py

def OneWeekRequest(request):
    #code here....
    ......
    return render_to_response('weeklyreport.html',
                              {'n1week': n1week,
                               'g1week': g1week,
                               'fweeks': fweeks,
                               'g4weeks': g4weeks,
                               'form': form,
                               'start': start,
                               'end': end,
                               'wnumber': wnumber,
                               'speriod': selectedrange},
                              context_instance=RequestContext(request))

def TopAlerts(request):
    #code here....
        ......    
    return render(request, 'weeklyreport.html', {'tops': tops})

urls.py

from django.conf import settings
from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'^$', 'platforms.views.queryset'),
    url(r'^weeklyreport/$', 'weeklyreport.views.OneWeekRequest'),
    #url(r'^weeklyreport/', include('weeklyreport.urls')),

【问题讨论】:

    标签: django django-templates django-views


    【解决方案1】:

    我在模板标签中创建了 templatetag.py

    from django import template
    from platforms.models import Platform, Event
    
    register = template.Library()
    
    @register.simple_tag
    def top_alerts(top):
        tops = Event.objects.filter(sourcetype_id__in=[1, 3],
                                      status_id__in=[1,2,7,8],
                                      event_datetime__range=('2014-04-07', '2014-04-13')
                                      ).exclude(service_id__in=[759, 7]
                                                ).values("event_datetime",
                                                         "platform__name",
                                                         "host__name","service__name",
                                                         "eventtype__name",
                                                         "status__name", "data")
        return {'tops': tops}
    

    在我的模板中。

    {% load templatetag %}
    and
    {% top_alerts top %}
    

    并且工作正常,但我不完全确定这是否适合我的项目。

    【讨论】:

      【解决方案2】:

      您不能从一个 URL 返回两个视图。一个 URL 总是指向一个视图(当然多个 URL 可以指向同一个视图)。

      听起来您的TopAlerts 视图应该真的是inclusion tag

      【讨论】:

      • 感谢您的建议,我使用了“@register.simple_tag”
      猜你喜欢
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 2021-09-22
      • 2016-11-06
      • 1970-01-01
      • 2015-05-23
      相关资源
      最近更新 更多