如何以__init__
形式访问请求?
forms.py
class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super(MyForm, self).__init__(*args, **kwargs)
def clean(self):
... access the request object via self.request ...
views.py
myform = MyForm(request.POST, request=request)
但是如果我使用基于类的视图FormView
怎么办?
答案 0 :(得分:4)
如果您需要在MyForm
中访问请求,则可以覆盖FormView.get_form_kwargs
方法。
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs.update({'request': self.request})
return kwargs
class FormMixin(ContextMixin): ... def get_form(self, form_class=None): """ Returns an instance of the form to be used in this view. """ if form_class is None: form_class = self.get_form_class() return form_class(**self.get_form_kwargs()) def get_form_kwargs(self): """ Returns the keyword arguments for instantiating the form. """ kwargs = { 'initial': self.get_initial(), 'prefix': self.get_prefix(), } if self.request.method in ('POST', 'PUT'): kwargs.update({ 'data': self.request.POST, 'files': self.request.FILES, }) return kwargs if form_class is None: form_class = self.get_form_class() return form_class(**self.get_form_kwargs())
答案 1 :(得分:-1)
您可以使用user_passes_test装饰器,记录在: https://docs.djangoproject.com/en/1.9/topics/auth/default/#django.contrib.auth.decorators.user_passes_test
var values = []; // declare it outside document.ready
$( document ).ready(function() {
$('.sal').click(function(i) {
values.push($(this).val()); // add value to array
});
});