通过django的render()快捷方式

时间:2016-12-27 06:38:54

标签: python django django-views

我有一个日期过滤器,我正在通过几个django视图:

views.py

def event_list(request):
    date_query = request.GET.get("date", str(default_event_date()))
    d = datetime.strptime(date_query, "%Y-%m-%d").date()
    # do stuff...

    return render(request, "events/event_list.html", context)

但我希望通过render()继承GET参数。

我已找到this answer了解如何使用reverse()执行此操作,但render()并未直接使用网址。

我怀疑我需要将其重新添加到通过的request,但我不确定如何执行此操作。

1 个答案:

答案 0 :(得分:1)

我认为你误解了renderrender生活中的工作就是从HTML模板和上下文词典中返回HttpResponse content to the user

  

将给定模板与给定的上下文字典组合在一起   并返回带有该渲染文本的HttpResponse对象。

相反,redirect会将用户重定向到新的网址(即,可以包含GET个参数)。因此,如果您使用render,则必须手动保留GET参数。当然,您可以通过执行以下操作将<{1}}添加到用户的会话中来避免这种情况:

date

这样您就可以将GET参数“转发”到后续路线和视图中。