我有一个 Django 网站,我在其中使用 oauth2app 库进行 OAuth 2 身份验证。我还修改了 oauth2app 以使用 Krispy_forms,而不是弃用的 uni_form。
oauth2app 中的 authorize() 方法由 Django 装饰器 @login_required 保护。事实上,如果客户在没有先登录的情况下尝试授权,则会出现登录页面。
正如预期的那样,装饰器使登录页面 URL 具有“下一个”CGI 参数,其中包含授权请求的原始 URL。
问题是,当登录页面的模板被实例化时,“next”参数没有被传播。我想要的是表单“action”包含“next”参数。
此页面旨在提供解决方案:
http://django-uni-form.readthedocs.org/en/latest/helpers.html
在“在视图中操作助手”部分中。
按照那个例子,我尝试了:
form = LoginForm()
redirect_url = request.GET.get('next')
if redirect_url is not None:
form.helper.form_action = reverse(login) + '?next=' +
redirect_url
但是结果页面的来源显示了表单的原始“操作”。对 form_action 的分配似乎没有生效。事实上,如果我不实例化模板,而只是返回 form_action,它并没有改变:
return HttpResponse('action: ' + form.helper.form_action)
让我不解。