是否在Django中使视图选择不正确的请求对象?

时间:2016-03-29 18:38:28

标签: django httprequest

通常Django视图类似于:

def exciting_possibilities(request, optional_variable=None...):

我遇到了通过正则表达式在网址中捕获optional_variable的情况。它是用户标识符,由于特定的业务情况,只能通过GET传输作为电子邮件链接的一部分。如果它存在,my_view动态地选择“可能性”。如果它不存在,它会为用户呈现一个识别表单以提供信息。

假设用户现在将信息发布到表单(简化):

def identify_user(request):
    e = ExampleUser(identifier=request.POST.get("optional_variable", None))
    e.save()

既然识别了用户,我现在想回到exciting_posibilites,但显然我不能打电话:

return exciting_possibilities(optional_variable=e.identifier)

因为没有请求(生成一个需要一个我没有的URL)。

我应该request可选(使用=None)并将“可能性选择”逻辑切换为单独的函数吗?

或者当从identify_user返回时,我应该通过原始请求(即使它是POST),并从request.method中取出exciting_possibilites检查逻辑?

1 个答案:

答案 0 :(得分:2)

这是您从POST视图到GET视图进行重定向的地方。在这种情况下,在发布表单数据后,只需重定向到您的exciting_possibilities视图。

def identify_user(request):
    e = ExampleUser(identifier=request.POST.get("optional_variable", None))
    e.save()
    return redirect(reverse('exciting_possibilities', kwargs={'optional_variable': e.identifier}))