求助下 django 的用户登陆成功后跳转至 index,需要显示用户名。这个全局变量如何传递?

2014-06-24 23:37:12 +08:00
 no13bus
views里面的代码
https://gist.github.com/no13bus/5e031da7bef9a1f57a35
index.html模版里面的代码
https://gist.github.com/no13bus/8ff81b891b77e908c510

HttpResponseRedirect(reverse('index'))只是跳转,但是没法传递全局变量或者变量。不知道我上面views里面的代码能否这样传递。有没有更好的办法?
7537 次点击
所在节点    问与答
7 条回复
ericFork
2014-06-25 00:20:05 +08:00
如果你只是想传递 request 或者 user 的话,直接在 settings 里添加 context processor 更简单一些,比如添加了 django.core.context_processors.request 就可以在模板里直接使用 request 对象了
delo
2014-06-25 00:30:18 +08:00
用户名你不是已经可以通过request.user.username获得了么,login之后request.user里就是当前用户对象了
paloalto
2014-06-25 01:10:23 +08:00
我习惯存在 session 里。。。
jianghu52
2014-06-25 08:49:45 +08:00
up paloalto 我也习惯放session
no13bus
2014-06-25 09:27:50 +08:00
@delo 其实我的意思是login之后跳转到index里面的时候,index要知道username的值,是不是就是通过data['request'] = request来将request传递到模板里面来使得request.user.username能渲染成功。
delo
2014-06-25 09:31:51 +08:00
@no13bus 哦哦,以为你代码注释里提了两个问题,我理解不太到位。用1楼的方法就OK了 :)
no13bus
2014-06-25 15:20:44 +08:00
@paloalto
@jianghu52
多谢。看了下手册的session 确实这样的解决办法好。总觉得吧request整个对象传递到模板里面太大了。
再多问个问题。form验证里面有个auto_id属性,但是django总是form没有这个key,总报错。
email=forms.EmailField(required=True,auto_id='%s',error_messages={'required':u'邮箱必须','invalid':u'请输入正确的邮箱'},widget=forms.TextInput(attrs={''class':'input-xlarge'}))
(这个目的就是让form生成的input标签里面的id='email' 而不是默认的id='id_email'。

下面是我自己的一个笨的解决办法:
email=forms.EmailField(required=True,error_messages={'required':u'邮箱必须','invalid':u'请输入正确的邮箱'},widget=forms.TextInput(attrs={'id':'email','class':'input-xlarge'}))

要是auto_id能用就好了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/119360

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX