我有一个对用户进行身份验证的视图。如果用户已通过身份验证,则程序应使用请求和用户作为参数调用另一个视图。
def home(request):
if request.method == "POST":
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
return index(request, user)
else:
context = {'error_message': "That username and password don't exist in our system."}
return render(request, 'list/home.html', context)
因此,当调用index时,请求与请求发送到主视图的实例相同,对吧?我担心的是,当它应该是GET请求时,请求仍然是POST请求。
这是一种误解吗?我应该创建一个新的请求对象并将其发送到索引吗?
感谢。
答案 0 :(得分:2)
您应该使用redirect方法
if user is not None:
return redirect(reverse('index'))
答案 1 :(得分:0)
如果POST成功,在POST后重定向,以防止刷新再次提交。
所以你是对的,你需要重定向以确保没有提交上一个表格。但除此之外,你不应该认为视图是可直接链接的,而是进入思维模式,即视图是你发出请求时得到的。正如afilardo建议的那样,你应该重定向。
return redirect('index')