我会尽量保持事情的简单性,因为你对API的未来需求不确定,猜测可以引入额外的复杂性,甚至在需求明确时甚至不需要。
  
  
   Django表单和Rest框架序列化程序都已经为您提供了一种声明性方法,该方法抽象出基本内容所需的样板代码,而基本内容通常占据了大部分代码。
  
  class ArticleForm(ModelForm):
    class Meta:
        model = Article
        fields = ['title', 'content']
  
   在未来,DRS序列化程序将是:
  
  class ArticleSerializer(ModelSerializer):
    class Meta:
        model = Article
        fields = ['title', 'content']
  
   如您所见,如果您尝试坚持使用ModelForm和ModelSerializer,那么无论如何都不会有太多重复。您还可以简单地将字段列表存储在变量中并重用它。
  
  
   对于更多自定义内容,可以从将逻辑共享到简单函数开始,例如:
  
  def save_article_with_author(article_data, author_data):
    # custom data manipulation before saving, consider that article_data will be a dictionary either if it comes from deserialized JSON (api) or POST data
    # send email, whatever
  
  
  
   对于与数据获取相关的所有内容,我将尽量使用模型管理器,定义可以恢复的自定义查询集,例如表单和序列化程序的选项。
  
  
  
  
   然后,稍后将要求您编写一个简单的管理命令,用于从电子表格批量导入用户。在这一点上,您在save()方法中所做的工作确实会妨碍您的工作,因为您可以通过模型自由地访问数据,而不必费心使用权限、电子邮件等。
  
  
   
    https://www.django-rest-framework.org/topics/html-and-forms/
   
  
  
   
    块引用
REST框架适合于返回API风格的响应和常规HTML页面。此外,序列化程序可以用作HTML表单并在模板中呈现。
   
  
  
   以下是一些关于如何根据请求内容类型从HTML动态切换到JSON的指导原则:
  
  
   
    https://www.django-rest-framework.org/api-guide/renderers/#advanced-renderer-usage