第一次发帖,比较菜,描述可能比较啰嗦,请多包涵
事情是这样的,现在在用 CAS 做一个单点登陆系统
用的是 django 的几个库( django-cas-ng , django-mama-cas , django-python3-ldap , django-ldapdb )
目前是用一个 django 应用做 CAS SERVER ,然后其他的应用对用户进行的所有操作(登陆注册修改信息等)都会跳转到 cas server 进行,然后再跳转回去
然后目前遇到这样一个问题,比如给一个手机注册的用户,绑定邮箱,逻辑如下:
1. 用户访问
app1.com ,点击绑定邮箱
2. 用户名和 app1 的 url 作为参数,跳转到
server.com/bind_mail/?username=XXX&?url=app1.com3. 然后问题就出在这儿了, cas server 端的 view 函数需要从 request.GET 里得到 username 和 url 参数,然后在表单提交后的,
request.POST 里根据对用户进行修改,代码如下:
https://gist.github.com/anonymous/9016d43ecc376e1165e1然后发现 view 里一开始用 request.GET 取到的参数,到表单提交后(if
request.POST 之后)就没有了,用了 deepcopy 也保存不了
然后用了个特别笨的方法,在<input type='submit'>里加了个 name="{{ request.GET.url }}#{{ request.GET.username }}",然后在
request.POST 后是能拿到 url 和 username 了,修改跳转都正常。
然而这种方法,一旦表单验证失败, url 里的关键字参数就会消失,就无法完成修改了
搜索了半天,没有合适的方法,有个很久前的文章(
https://timmyomahony.com/blog/djangos-request-updating-with-request-get/)说用 request.REQUEST.get 能得到 old value ,然而试了并没有用,新版 django 文档里也没有相关资料
所以在这里求助,有什么好的解决方案吗?还是我的整个思路就有问题?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/265041
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.