Django Rest Framework render_form&必填项目

时间:2016-05-20 17:27:06

标签: css django forms django-rest-framework required

在DRF中使用HTML表单渲染器时,有没有人能想到通过钩子或骗子自动生成DRF中“必需”字段的一些指示的好方法?我的意思是在我提交表单之前,在该字段上需要一些指示 - 它将以错误形式显示的可浏览API,但仅在提交后才显示。

我是否正在使用此处所示的技术,用于具有字段级HTML表单的可浏览API(而不仅仅是原始/ 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”等制作我自己的模板/片段,并在序列化程序中使用样式声明,如图所示这里:

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

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

但是我希望能够根据模型定义,在适当的情况下(甚至只是星号或应用CSS类)自动生成带有/不带必需标志的字段。

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

1 个答案:

答案 0 :(得分:1)

我可以看到两种方式:

您可以定义自己的模板包,查看来源中的现有模板包(例如' rest_framework / horizo​​ntal / input.html') - 您可以检查是否需要字段并根据此标记,设置一些CSS。你不需要额外的东西,特别是"输入 - readonly.html" - 只需制作自己的input.html副本,添加几个if-s即可。

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