有在我的知識很大的差距,所以我可能會試圖解決這種錯誤的方式。目標是使用此Google Maps JavaScript API來自動完成和解析地址輸入,並將結果保存在模型中。Django的 - 谷歌地圖API - 通過JS變量通過形式view.py
我找不到一個方法來將變量從JS直接傳遞到view.py
,所以現在計劃是讓JS填充一個隱藏字段as suggested by a previous unsolved question。
可以由ModelForm
產生的場被用於此?如果不是,應該如何創建表單以便JS填寫字段,這些字段是隱藏的,並且不會被用戶更改,並且它使用csrf_token
?
這是我迄今爲止所有的。有一堆由JS自動填充的input
字段。通過ModelForm
產生的form|crispy
沒有得到填補,即使id
是相同的(在models.py
字段名稱是相同的谷歌的命名方案)。我不明白JS的最後一段是如何工作的,這可能是我卡住的地方。
更新: 下面的代碼不給POST,爲什麼?
<!-- language: lang-js -->
$.ajax({
type: 'POST',
url: 'http://localhost:8000/place/new',
dataType: 'json',
data: {
csrfmiddlewaretoken: '{{ csrf_token }}',
address: 'test'
},
success: function (response, textStatus, error) {
console.log('SUCCESS')
},
error: function (request, textStatus, error) {
console.log('error')
console.log(place)
}
});
<!-- end snippet -->
<!-- language: lang-python -->
def placenew(request):
if request.method == 'POST':
test = request.POST.get('address')
response_data = {}
print (test)
print ("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^")
return render(request, 'app/placenew.html', {'key':key})
else:
print ("not POST")
return render(request, 'app/placenew.html', {'key':key})
<!-- end snippet -->
我對Ajax沒有經驗,我把代碼放在哪裏,有什麼要安裝的?至於替代方法,我現在正在嘗試,'id'似乎與示例中的匹配,但它不填充。編輯:nevermind,顯然Django將id_'放在id前,這就是可能是它不起作用的原因。 – dtgq
是的,這是django渲染表單的標準。我更新了一些更詳細的信息和django&ajax文章的鏈接。 –
我將它更改爲'url:'/ place/new /'',但沒有解決它。我儘可能地按照教程進行了操作,並且我知道它被調用,因爲'console.log('error')'起作用,並且它還在'place'中記錄了正確的信息。我不太明白'如果request.is_ajax():'裏面發生了什麼,但是我複製它並仍然打印'not POST'。 – dtgq