Caught AttributeError при рендеринге: объект WSGIRequest не имеет атрибута 'get'

В порядке больше. Я, наконец, получил свою форму для проверки, публикации и перенаправления на страницу, в которой он нуждается. Теперь моя проблема - когда я возвращаюсь на страницу с формой, я получаю эту ошибку:

Caught AttributeError при рендеринге: объект WSGIRequest не имеет атрибута 'get'

Кажется, единственный способ восстановить его работу - удалить forms.py, заменив то, что раньше не работало. Добавьте то, что работает, и я могу заставить его работать ONCE. Любые идеи, что может вызвать эту проблему?

ФОРМЫ:

class LeadSubmissionForm(forms.ModelForm):
    """
    A simple default form for messaging.
    """
    class Meta:
         model = Lead
        fields = ( 
            'parent_or_student', 'attending_school', 'how_much', 'year_of_study', 'zip_code', 'email_address', 'graduate_year', 'graduate_month', 'email_loan_results'
        )

МНЕНИЯ:

@render_to("lender/main_views/home.html")
def home(request):
    if request.method == 'POST':
        form = LeadSubmissionForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse("search_results"))
    else:
        form = LeadSubmissionForm(request)

    testimonials = Testimonial.objects.filter(published=True)[:3]
    return {'lead_submission_form':form,
        'testimonials': testimonials,}

МОДЕЛИ:

class Lead(TitleAndSlugModel):
    """
    A lead submitted through the site (i.e. someone that has at-least submitted the search form
    """

    PARENT_OR_STUDENT = get_namedtuple_choices('PARENT_OR_STUDENT', (
        (0, 'PARENT', 'Parent'),
        (1, 'STUDENT', 'Student'),
    ))
    YEARS_OF_STUDY = get_namedtuple_choices('YEARS_OF_STUDY', (
        (0, 'ONE', '1'),
        (1, 'TWO', '2'),
        (2, 'THREE', '3'),
        (3, 'FOUR', '4'),
    ))

    parent_or_student = models.PositiveIntegerField(choices=PARENT_OR_STUDENT.get_choices(), default=0)
    attending_school = models.ForeignKey(School)
    how_much = models.DecimalField(max_digits=10, decimal_places=2)
    year_of_study = models.PositiveIntegerField(choices=YEARS_OF_STUDY.get_choices(), default=0)
    zip_code = models.CharField(max_length=8)
    email_address = models.EmailField(max_length=255)
    graduate_year = models.IntegerField()
    graduate_month = models.IntegerField()
    email_loan_results = models.BooleanField(default=False)

    def __unicode__(self):
        return "%s - %s" % (self.email_address, self.attending_school)

Снова любая помощь - большая помощь. Спасибо!

Ответ 1

Вам не нужно передавать запрос при создании экземпляра LeadSubmissionForm, когда request.method == 'GET'.

Чтобы сохранить несколько строк кода, вы также можете:

@render_to("lender/main_views/home.html")
def home(request):
    form = LeadSubmissionForm(request.POST or None)
    if request.method == 'POST':
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse("search_results"))
    testimonials = Testimonial.objects.filter(published=True)[:3]
    return {'lead_submission_form':form, 'testimonials': testimonials}

Надеюсь, что это поможет тебе.