执行form.is_valid()时,'WSGIRequest'对象没有属性'get'

Ima*_*ani 1 python django

我正在使用Django 2.0.1和Python 3.5.2

这样做时我得到了这个错误 form.is_valid()

AttributeError: 'WSGIRequest' object has no attribute 'get'

view.py:

@method_decorator(login_required, name='dispatch')
class CourseSelectionView(View):

    def get(self, request):
    form = CourseSelectionForm(request)
    selected_course = SelectedCourse.objects.filter(user=request.user)
    return render(request, 'profile/CourseSelection.html', context={
        'form': form,
        'selected_course': selected_course,
    })  

    def post(self, request):
    form = CourseSelectionForm(request)
    if form.is_valid():
        if not request.user.profile.can_select_this(int(self.request.POST.get('course_id'))):
            form.errors['course_id'] = "??? ???? ?? ????? ???? ??? ????? ??????."
            return render(request, 'profile/CourseSelection.html', context={
                'form': form
            })
        request.user.profile.remaining_units = \
            request.user.profile.remaining_units - int(self.request.POST.get('course_id'))
        return redirect(reverse_lazy('course_selection'))
Run Code Online (Sandbox Code Playgroud)

forms.py:class CourseSelectionForm(ModelForm):

    course_id = forms.IntegerField(
    max_value=10000000
    )

    class Meta:
        model = SelectedCourse
        fields = ('course_id',)

    def clean_course_id(self):
        course_id = self.cleaned_data.get('course_id')
        try:
            int(str(course_id))
        except ValueError:
            raise ValidationError("Please enter a valid course")
        return course_id
Run Code Online (Sandbox Code Playgroud)

追溯:

    Internal Server Error: /profile/course_selection
Traceback (most recent call last):
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/core/handlers/exception.py", line 35, in inner
    response = get_response(request)
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 128, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/views/generic/base.py", line 69, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/utils/decorators.py", line 62, in _wrapper
    return bound_func(*args, **kwargs)
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/utils/decorators.py", line 58, in bound_func
    return func.__get__(self, type(self))(*args2, **kwargs2)
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/views/generic/base.py", line 89, in dispatch
    return handler(request, *args, **kwargs)
  File "/home/heh/Projects/PycharmProjects/acsrv2/acsuser/views.py", line 97, in post
    if form.is_valid():
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/forms/forms.py", line 179, in is_valid
    return self.is_bound and not self.errors
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/forms/forms.py", line 174, in errors
    self.full_clean()
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/forms/forms.py", line 376, in full_clean
    self._clean_fields()
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/forms/forms.py", line 388, in _clean_fields
    value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name))
  File "/home/heh/Projects/PycharmProjects/acsrv2/venv/lib/python3.5/site-packages/django/forms/widgets.py", line 254, in value_from_datadict
    return data.get(name)
AttributeError: 'WSGIRequest' object has no attribute 'get'
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

itz*_*nTV 7

我想你需要这样做

form = CourseSelectionForm(request.POST)
Run Code Online (Sandbox Code Playgroud)