簡體   English   中英

django形式的附加字段

[英]Additional field in django form

我正在Django中創建一個表單。 當我發布數據時,數據會自然發送。 我的問題是,我想將一個額外的屬性傳遞給POST數據,這不是任何表單字段,而是另外一個。

這樣我以后可以做類似(偽代碼)的事情:

def form_view(request):
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            extra_field = form.cleaned_data['extra_field']
            #or maybe
            extra_field = form.extra_field
            #...
    else:
        form = MyForm()
        #...

任何可能有效的方法是將一個額外的屬性(不是字段而是一個簡單的變量)傳遞給POST請求。

如果要將任何內容作為來自HTML的POST請求傳遞給django,則可以使用隱藏輸入

<input type="hidden" name="foo" value="bar" />

print request.POST['foo'] # out: bar

如果要從視圖中修改python中的POST字典,請copy()以使其可變。

mutable_post = request.POST.copy()
mutable_post['foo'] = 'bar'

form = MyForm(mutable_post)

在表單的clean方法中,您可以向form.cleaned_data['extra'] = 'monkey butter!'添加新信息,例如: form.cleaned_data['extra'] = 'monkey butter!' ,如果是form.is_valid() ,那么你有額外的信息。

您最終要做的將取決於您的額外信息是什么,以及您可以在哪里獲得。

有幾種方法可以做到這一點。 一,是否可以將其添加到模板中。

<form action="." method="post">{% csrf_token %}
   {{ form.as_p }}
   <input type="hidden" name="extra_field" value="{{ extra }}" />
   <input type="submit" value="submit" />
</form>

另一種方法是將字段添加到表單類,但使用隱藏的窗口小部件 我不確定這是不是你想要的。 如果是,只需添加評論,我就可以進一步解釋這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM