Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django AttributeError,KeyError_Python_Django - Fatal编程技术网

Python Django AttributeError,KeyError

Python Django AttributeError,KeyError,python,django,Python,Django,这是我的views.py def new_note(request): form = NoteForm(request.POST, user=request.user) . . . return render(request, 'newNote.html', {'note_form': NoteForm, 'registered': registered}) class NoteForm(forms.ModelForm): def __init__(self,

这是我的
views.py

def new_note(request):
    form = NoteForm(request.POST, user=request.user)
    . . .
    return render(request, 'newNote.html', {'note_form': NoteForm, 'registered': registered})
class NoteForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        # self.user = kwargs.pop('user', None)
        self.user = kwargs.pop('user')
        # self.validate = kwargs.pop('validate', False)
        super(NoteForm, self).__init__(*args, **kwargs)
        groups = StudentGroup.objects.filter(id_nauczyciela=self.user.pk)
        # print(self.user.pk)
        self.fields['id_groups'].queryset = groups

    note_name = forms.CharField(label="Note name", required=True)

    class Meta:
        model = Note
        fields = ('id_groups', 'id_students', 'note_name')
这是我的
forms.py

def new_note(request):
    form = NoteForm(request.POST, user=request.user)
    . . .
    return render(request, 'newNote.html', {'note_form': NoteForm, 'registered': registered})
class NoteForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        # self.user = kwargs.pop('user', None)
        self.user = kwargs.pop('user')
        # self.validate = kwargs.pop('validate', False)
        super(NoteForm, self).__init__(*args, **kwargs)
        groups = StudentGroup.objects.filter(id_nauczyciela=self.user.pk)
        # print(self.user.pk)
        self.fields['id_groups'].queryset = groups

    note_name = forms.CharField(label="Note name", required=True)

    class Meta:
        model = Note
        fields = ('id_groups', 'id_students', 'note_name')
id\u组
是ModelChoseField

在这段代码中,我尝试获取记录的用户id

当我尝试使用它时,我得到了错误
KeyError'user'
,当我将
self.user=kwargs.pop('user')
更改为
self.user=kwargs.pop('user',None)
我得到了这样的错误

AttributeError:“非类型”对象没有属性“pk”

我绝对肯定
self.user.pk
返回的值是我所期望的


我的问题是如何处理这类错误?

您的渲染完全忽略了您提供的表单

return render(request, 'newNote.html', {'note_form': NoteForm, 'registered': registered})
应该是

return render(request, 'newNote.html', {'note_form': form, 'registered': registered})
这将解决您遇到的原始密钥错误问题,更改代码时发现的问题将需要不同的错误处理

self.user = kwargs.pop('user', None)
# self.validate = kwargs.pop('validate', False)
super(NoteForm, self).__init__(*args, **kwargs)

if self.user is not None:
    groups = StudentGroup.objects.filter(id_nauczyciela=self.user.pk)
    # print(self.user.pk)
    self.fields['id_groups'].queryset = groups

请共享您的完整视图。py