是否有推荐的方法将变量传递给我的所有视图?就我而言,我想传递一个UserProfile对象,该对象是一个django.contrib.auth.models.User对象。我发现大部分(如果不是全部)我的视图需要拉取UserProfile对象并将它放入Middleware看起来就像是要走的路。好像我可以做类似如下(我见过一对夫妇的解决方案,在线的暗示吧):在不使用request.session的情况下将自定义变量添加到Django Middleware中的请求对象中
request.session['userprofile'] = userprofile_object
我不喜欢这一点,因为如果我的用户配置模型曾经有一个非序列化字段,它会打破request.session。
是的,有多种方式可以获取UserProfile对象。你也可以做UserProfile.objects.filter(user = request.user),但是这并不回答这个问题,你如何将它传递给视图? – jsw 2012-03-01 23:20:37
也许我误解了你的问题。因为每个视图都获取作为第一个参数传入的请求,所以不需要将该配置文件“传递”到视图中。如果你想在每个模板上都有一个userprofile变量,你可以考虑一个自定义的context_processor,它将userprofile_object放入一个变量中。 – Jingo 2012-03-01 23:29:13
我相信'prof = request.user.userprofile_object_set.all()[0]'每次调用时都会触发数据库? – user9876 2012-10-08 16:16:15