通常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
检查逻辑?
答案 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}))