Django Rest Framework render_form & 必填字段

Django Rest Framework render_form & required fields

在 DRF 中使用 HTML 表单渲染器时,有谁能想出一种好方法来自动生成 DRF 中 "required" 字段的某些指示,不择手段? 我的意思是,在我提交表单之前,字段上有一些指示它是必需的 - Browsable API 它会在表单中正确显示错误是什么,但只有在提交之后。

我是否使用此处显示的技术来浏览 API 字段级 HTML 表单(而不仅仅是 raw/JSON 表单):

django-rest-framework - autogenerate form in browsable API?

或者我正在使用 TemplateHTMLRenderer 并调用 render_form,如文档中所述:

http://www.django-rest-framework.org/topics/html-and-forms/#rendering-forms

我没有找到一种简单的方法来使我的必填字段按要求呈现。所以说我们喜欢

#models.py
class Foobar(model.Models):
  foo = models.CharField(max_length=100, blank=True, default='')
  bar = models.CharField(max_length=100, blank=False)

我能想到的最好的方法是为每种类型的字段 "required-text-field.html"、"required-checkbox.html" 等制作我自己的 template/snippet,并在序列化程序中使用样式声明,如下所示:

http://www.django-rest-framework.org/topics/html-and-forms/#field-styles

这是假设我理解这一点,还没有玩过它。

但我希望看到一种方法来根据需要自动生成字段 with/without 所需的标志(即使只是一个星号,或应用 CSS class) 模型定义.

漫无目的:这里的目标是避免编写我自己的表单,让 DRF 在自定义视图中为我生成表单。与使用将它们绑定到 AJAX 来编写我自己的表单相反,我认为模板 render_form 和一些格式检查就足够了。但现在我认为 DRF 是为后端和开发而不是前端构建的,如果它对最终用户可见,也许我应该计划编写自己的表单?我也可以根据名称拥有 CSS 文件和 select,调用 render_form 然后应用手纺样式,比 HTML + CSS 工作更少.我应该审查 Django(只是 Django,不是 DRF)表单并重新使用序列化程序作为验证吗?...

我可以看到两种方式:

您可以定义自己的模板包,查看源中现有的模板包(例如 'rest_framework/horizontal/input.html')- 您可以检查是否需要字段并根据此标志设置一些 css .你不需要额外的东西,尤其是 "input-readonly.html" - 只需制作你自己的 input.html 副本,添加一些 if-s 就可以了。

或者您可以在 API 端点上调用 OPTIONS 以获取有关字段的所有必要信息,不仅是 required,还有 readonly 以及某些字段的允许值选择 - 如果您可以从 javascript

更新您的表单