我正在尝试基于带有复选框的表单来设置和取消设置Django cookie。选中复选框后,我希望设置cookie。
将复选框的值传递给视图可以正常工作,但设置和取消设置cookie则不能正常工作。
这是一种观点:
def filter(request):
tasks = list()
if request.POST.get('today') == 'yes':
tasks.extend(Task.objects(when='today'))
print('get tasks today')
response = render(request, 'index.html', {'tasks': tasks})
if request.POST.get('today') == 'yes':
response.set_cookie('today', 'yes')
print('set cookie today')
else:
response.set_cookie('today', 'no')
print('cookie not set today')
return response
字符串
是否设置cookie由以下代码决定:
{{request.COOKIES.today}}
<form action="filter" method="POST">
{% csrf_token %}
<input type="checkbox" name="today" value="yes" {% if request.COOKIES.today == 'yes' %}checked{% endif %}> Today</div>
<input type="submit" value="Show" class="btn btn-warning col-12 btn-sm"/>
</form>
型
在我的模板中,我使用{{request.COOKIES.today}}
来检查cookie的值。发生的事情很奇怪。如果我单击复选框,cookie不会像我所期望的那样被设置,并且当页面重新加载时,复选框也不会被选中。但如果我再次选中复选框,则cookie被设置并选中复选框。
我在哪里犯了错,或者错过了什么。我正在尝试在第一次提交表单时设置cookie。
1条答案
按热度按时间0mkxixxg1#
我通过使用HttpResponseRedirect对象“解决”了这个问题
设置cookie后,我重定向到一个视图,该视图读取cookie并列出与cookie对应的“时间段”内的任务。
字符串