很多时候,您需要以表单或 util 函数等形式提出请求......
在内置字典中插入请求是一个坏主意吗?
也就是说,实现这样的中间件是不是一个坏主意?:
import sys
PY3 = False
if sys.version_info.major == 3:
PY3 = True
class GlobalRequestMiddleware(object):
def process_request(self, request):
if PY3:
import builtins
builtins.__dict__["request_global"] = request
else:
import __builtin__
__builtin__.__dict__["request_global"] = request
然后您可以在表单或 util 函数中使用请求,如下所示:
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
def save(self, commit=True):
obj = super(MyModelForm, self).save(commit=False)
obj.owner = request_global.user
obj.save()
return obj
或者
def my_func_util():
if request_global.user.is_anonymous():
XXX
else:
YYY
我知道“总是”比隐含更好……但是还有更多的理由吗?