在我的模板中,我有JavaScript發送GET調用Django方法。在這種方法中,我想返回一個空白表單回到模板。下面是我的javascript:在Django中,如何將表單返回給Javascript函數?
require(["dojo/request/xhr", "dojo/domReady!"],
function(xhr, ready){
var url = window.location.pathname + "dev/" + report_id + "/" + report_url + "/";
xhr(url, {
method: "get"
}).then(
function(response){
var json_response = JSON.parse(response);
//do stuff
}
);
});
這裏的所發生的事情在我的Django的觀點:
def my_view(request):
if request.method == "GET":
form = MyForm()
data = json.dumps({
'form': form,
})
return HttpResponse(data, mimetype="application/json")
else:
#do other stuff
這裏是我得到現在的錯誤:
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <development.dev_forms.MyForm object at 0x7f3a8dd07e50> is not JSON serializable
所以看起來我不能序列化一個Django表單。所以,我想以某種方式將這個表單的字段返回給模板。我可以通過其他方式來做到這一點?有沒有辦法獲得所有字段的HTML?然後,我可以自己創建一本字典。還有其他建議嗎?謝謝!
這不會返回任何東西給我的Javascript。我擁有的是一個鏈接的頁面。根據我點擊的鏈接,需要呈現不同的表單。我正在嘗試使用JS來檢索該窗體。 –
我不知道使用ajax的方式,但它可能需要修改一下才能使用。我知道我的方法適用於此:http://api.jquery.com/load/ – marianobianchi
對不起@迪Z。我犯了一個錯誤,並寫入POST作爲表單方法,但它應該是GET。看看它現在是否有效。只需更改表單的方法 – marianobianchi