В чем разница между моделями и формами Django?

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

Ответ 1

В принципе, модель инкапсулирует информацию о чем-то (т.е. моделирует ее) и хранится в базе данных. Например, мы могли бы моделировать человека:

from django import models

class Person(models.Model):
    name = models.CharField(max_length=100)
    age = models.PositiveIntegerField()
    height = models.FloatField()
    weight = models.FloatField()

Всякий раз, когда экземпляр модели создается и сохраняется, Django хранит ее в базе данных, чтобы вы могли ее получить и использовать позднее.

С другой стороны, формы соответствуют формам HTML, т.е. набору полей, которые предоставляются конечному пользователю для заполнения некоторых данных. Форма может быть полностью независимой от модели, например, формы поиска:

from django import forms

class SearchForm(forms.Form):
    search_terms = forms.CharField(max_length=100)
    max_results = forms.IntegerField()

При представлении Django позаботится о проверке введенных пользователем значений и преобразовании их в типы Python (например, целые числа). Все, что вам нужно сделать, это написать код, который делает что-то с этими значениями.

Конечно, если вы создали модель, вы часто захотите разрешить пользователю создавать эти модели через форму. Вместо того, чтобы дублировать все имена полей и создавать форму самостоятельно, Django предоставляет ярлык для этого, ModelForm:

from django.forms import ModelForm

class PersonForm(forms.ModelForm)
    class Meta:
        model = Person

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

Ответ 2

Модели связаны с уровнем абстракции базы данных, описанным в уроке 1:

http://docs.djangoproject.com/en/dev/intro/tutorial01/

Он охватывает все, от того, что они есть, что такое философия, что она абстрагирует (raw sql). Прочтите его и вернитесь, если у вас есть вопросы, потому что это действительно хорошо.

Учебное пособие 4 охватывает формы.

http://docs.djangoproject.com/en/dev/intro/tutorial04/

Структура форм - это просто помощник для форм HTML. Существуют также ModelForms, основанные на структуре форм, которые связывают модели вместе с формами, но суть этого является основой для обработки отображения, проверки и обработки HTML-форм.