我正在構建一個 Web 應用程式,用戶可以在其中在傳單地圖上創建標記。標記的詳細資訊與 Django 一起保存在后端。我的目標是在單擊地圖后將用戶重定向到詳細資訊頁面以填充標記的詳細資訊。這里重定向到 url 的 js 代碼使用 Ajax 帖子創建。當用戶單擊傳單地圖時,它會運行。
map.on("click", function (e) {
window.location.href = {% url 'create' %};
$.ajax({
url: {% url 'create' %},
data: { markers: markers_dict},
type: "POST"
}).done(function (response) {
console.log(response);
});
}
但我在 views.py 中掙扎,因為這個重定向和 AJAX 帖子創建了兩個請求,一個是 GET,另一個是 POST:
def create_marker(request):
if request.method == "POST":
r = request.POST.get("markers")
print(r)
return JsonResponse({"response":"succeed"})
else:
return JsonResponse({"response":"failed"})
和 urls.py :
url_patterns = [
path("create/",views.create_marker,name="create"),
]
即使它r在控制臺中列印,它也總是回傳失敗的回應。如何在重定向到此 url 并使用這些資料創建 django 的同時將這些前端資料發送到創建 url?
uj5u.com熱心網友回復:
在進行 ajax 呼叫之前,您正在退出當前頁面。將重定向移動到 ajax 呼叫的 done 塊中。像這樣的東西:
map.on("click", function (e) {
$.ajax({
url: {% url 'create' %},
data: { markers: markers_dict},
type: "POST"
}).done(function (response) {
window.location.href = “{% url 'create' %}/” response.id;
});
}
您將需要在 urls.py 中再添加一個 url 以在后端編輯標記物件。試試 CBV DetailView。
因此,首先您將地圖資料發布到此視圖。成功后,將用戶重定向到已創建資料的編輯視圖。
- 用戶點擊地圖您在后端創建最小的物件
- 成功時您將獲得創建物件的 ID
- 將用戶重定向到該物件的表單/編輯視圖
- 用戶填寫剩余專案
- 用戶點擊保存
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/391788.html
標籤:javascript 姜戈 阿贾克斯
