Джанго новичок. Возникли проблемы с ModelForm - PullRequest
0 голосов
/ 13 сентября 2009

Я пытаюсь написать очень простое приложение для Django. Я не могу заставить его показать мою форму внутри моего шаблона.

<form ...>
{{form.as_p}}
</form>

это абсолютно ничего не показывает. Если я добавлю кнопку отправки, это только покажет это.

Нужно ли объявлять объект формы, который наследуется от форм. Форма? Может ли это быть сделано с ModelForms?

[UPDATE] Решено! (извиняюсь за потраченное время)

В моем файле URL были:

(r'login/$',direct_to_template,   {'template':'register.html'}

Переключено на:

(r'login/$','portal.views.register')

И да, я чувствую себя ужасно.

Справочная информация:

У меня есть модель Студента, и у меня есть страница регистрации. При обращении к нему должно отображаться текстовое поле с запросом имени ученика. Если студент заполняет это поле, он сохраняет его.

#models.py

class Student(models.Model):
   name = models.CharField(max_length =50)

#forms.py
class StudentForm (forms.ModelForm):
   class Meta:
       model = Student

Итак, вот мое мнение:

def register(request):                                                                                                                                   
          if request.method == 'POST':
                  form = StudentForm(request.POST)
                  if form.is_valid():
                          form.save()
                          return render_to_response('/thanks/')
          else:

                  student = Student()
                  form = StudentForm(instance =student)

          return render_to_response('register.html',{'form':form})

1 Ответ

2 голосов
/ 13 сентября 2009

Проблема на ваш взгляд. У вас не будет существующего студенческого объекта для извлечения из базы данных. Следующий пример кода поможет вам реализовать представление «создать».

В качестве примечания вы можете использовать функцию общего представления direct_to_template, чтобы сделать вашу жизнь немного проще.

def add_student(request):
    if request.method == 'POST':
      form = StudentForm(request.POST)
      if form.is_valid():
        new_student = form.save()

        return HttpResponseRedirect('/back/to/somewhere/on/success/')
    else:
      form = StudentForm()

    return direct_to_template(request,
                              'register.html',
                              {'form':form})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...