通过GET发送时,请求对象发送到Django form ok,但通过POST发送时为空

2024-09-30 14:33:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将请求用户发送到Django窗体,问题是,当我通过GET metho发送对象时,Django窗体会很好地接收它,但是当我通过POST方法发送时,请求对象总是空的,下面是代码:

***************视图.py

class CreateRec(BaseView):

    template_name = 'test/rec.html'


    def get(self, request, **kwargs):
        rec_form = RecForm(req_ses = request)
        return render(request, self.template_name,{
            'rec_form': rec_form, 'f_new': True,
        })

    def post(self, request, **kwargs):
        user_rec = User.objects.get(username = request)
        profile = profile_models.RecProfile.objects.get(cnxuser = user_rec)
        form = RecForm(request.POST, request.FILES, req_ses = request)
        return render(request, self.template_name,{
            'rec_form': rec_form, 'f_new': True,
        })

*********Form.py文件的片段:

class RecForm(forms.ModelForm):

    def __init__(self, req_ses = None, *args, **kwargs):
        super(RecForm, self).__init__(*args, **kwargs)
        self.req_ses = kwargs.pop('req_ses', None)
        user_rec = User.objects.get(username = req_ses.user)
        profile = profile_models.RecProfile.objects.get(cnxuser = user_rec)

通过GET,req\u ses有对象,通过POST它说req\u ses它没有…..知道为什么吗??,我也试图发送user\u rec对象,但是得到了相同的结果


Tags: 对象selfformgetobjectsrequesttemplateprofile
1条回答
网友
1楼 · 发布于 2024-09-30 14:33:30

无需使用req_ses参数和查找request.user所做的所有额外工作,因为^{}对象具有user属性

以下是您的代码,并对其进行了一些简化,希望能解决问题:

表单.py:

class RecForm(forms.ModelForm):    
    def __init__(self, *args, user=None, **kwargs):
        instance = profile_models.RecProfile.objects.get(cnxuser=user) 
        super(RecForm, self).__init__(*args, instance=instance, **kwargs)

视图.py:

class CreateRec(BaseView):
    template_name = 'test/rec.html' 

    def get(self, request, **kwargs):
        rec_form = RecForm(user=request.user)
        return render(request, self.template_name,{
            'rec_form': rec_form, 'f_new': True,
        })

    def post(self, request, **kwargs):
        form = RecForm(request.POST, request.FILES, user=request.user)
        return render(request, self.template_name,{
            'rec_form': rec_form, 'f_new': True,
        })

更新

class RecForm(forms.ModelForm):    
    def __init__(self, *args, user=None, **kwargs):
        print('args: {}'.format(args))
        print('kwargs: {}'.format(kwargs))
        print('user: {}'.format(user))
        instance = profile_models.RecProfile.objects.get(cnxuser=user) 
        super(RecForm, self).__init__(*args, instance=instance, **kwargs)

相关问题 更多 >