2016-05-20 97 views
1

當使用DRF HTML形式呈現,任何人都可以想到的一個很好的方式自動生成的不擇手段的DRF「要求的」現場的一些跡象?我的意思是我之前提交表單,場上的一些跡象表明,這是必需的 - 可瀏覽的API,它會顯示在表單提交只有經過什麼錯誤,但正確的。Django的REST框架render_form&必填字段

無論我使用如下所示的瀏覽的API與現場級的HTML表單(而不是隻生/ 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) 

我能想到的最好的是做我自己的模板/代碼段爲每種類型的字段「要求,文字field.html」,「要求-checkbox.html」等,並使用串行樣式聲明如下所示:

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

這是假設,我理解這一點,並沒有發揮它尚未看到。

但我很想看到一種方法來根據模型定義根據需要自動生成帶/不帶必需標誌的字段(即使只是星號或應用CSS類)。

漫話:這裏的目標是避免寫我自己的形式,具有DRF生成形式爲我自定義視圖。與使用綁定到AJAX編寫我自己的表單不同,我提供了模板,render_form和一些格式檢查就足夠了。但現在我想DRF是用於後端和開發建設,而不是前端,也許我應該計劃寫我自己的方式,如果這將是最終用戶可見的?此外,我可以有CSS文件並根據名稱進行選擇,調用render_form然後應用手工樣式,將比HTML + CSS更少工作。我應該檢討的Django(Django的只是,沒有DRF)形式和再利用串行的驗證......

回答

1

我可以看到2種方式:?

您可以定義自己的模板包,看看現有的(例如'rest_framework/horizo​​ntal/input.html') - 你可以檢查是否需要字段,並根據此標誌設置一些CSS。你不需要額外的東西,尤其是「input-readonly.html」 - 只需製作自己的input.html副本,添加幾個if-s就行了。

,或者你可以在API端點調用OPTIONS獲得所有必要的信息有關領域,不僅required,但readonly和允許值的一些選擇 - 這是如果你可以從JavaScript的

+0

更新您的形式對於一些因爲第一種方式在閱讀時沒有吸引我,但今天我想我會嘗試。我認爲form.field.required可以工作,但需要檢查...無論如何,它聽起來像我想象的那麼少的工作。我也喜歡關於OPTIONS的想法,我認爲這就是Android/iOS訪問(也是爲此使用令牌)的方式。 –