【问题标题】:whats the difference between Django models and forms?Django模型和表单有什么区别?
【发布时间】:2025-11-26 16:00:02
【问题描述】:

我是 Django 新手,无法理解模型和表单。谁能建议我与它们相关的差异和教程。

【问题讨论】:

    标签: django django-models django-forms


    【解决方案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 documentation 开始,其中包括有关创建和使用模型的教程,以及对表单的相当深入的了解。还有很多 Django 书籍和在线教程可以帮助您。

    【讨论】:

      【解决方案2】:

      模型与教程 1 中涉及的数据库抽象层相关:

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

      它涵盖了一切,包括它们是什么、哲学是什么、抽象的是什么(原始 sql)。如果您有任何问题,请阅读并回来,因为它真的很棒。

      教程 4 涵盖表单。

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

      表单框架只是 HTML 表单的助手。还有基于表单框架的ModelForms,将模型与表单联系在一起,但其核心是一个处理HTML表单显示、验证和处理的框架。

      【讨论】:

      • 是的,但“表单”实际上只是 HTML 助手。模型与 django 的核心有关,即数据库抽象层(ORM -- Object Relational Mapper),django 在这里将关系数据库数据转换为 python 对象。
      最近更新 更多