gpt4 book ai didi

jquery - 使用 AJAX 的 Django CreateView

转载 作者:行者123 更新时间:2023-12-01 01:40:27 25 4
gpt4 key购买 nike

我想在 Django 中使用 AJAX 通过通用 View 和模式来创建、更新和删除对象。Django 的官方文档讨论了 AjaxableResponseMixin 并显示了这段代码:

from django.http import JsonResponse
from django.views.generic.edit import CreateView
from myapp.models import Author

class AjaxableResponseMixin:
"""
Mixin to add AJAX support to a form.
Must be used with an object-based FormView (e.g. CreateView)
"""
def form_invalid(self, form):
response = super().form_invalid(form)
if self.request.is_ajax():
return JsonResponse(form.errors, status=400)
else:
return response

def form_valid(self, form):
# We make sure to call the parent's form_valid() method because
# it might do some processing (in the case of CreateView, it will
# call form.save() for example).
response = super().form_valid(form)
if self.request.is_ajax():
data = {
'pk': self.object.pk,
}
return JsonResponse(data)
else:
return response

class AuthorCreate(AjaxableResponseMixin, CreateView):
model = Author
fields = ['name']

(我有一个看起来像这样的模型)但是我不明白如何在模式中实现它。我目前正在使用这个表单,但它是一个网页,而不是模式:

  <form method="post" novalidate>
{% csrf_token %}
{% include 'includes/form.html' %}
<button type="submit" class="btn btn-success">AJouter</button>
</form>

有没有一种简单的方法可以使用ajax和jquery在模态中实现它?

最佳答案

我使用 fetch 而不是 Ajax。在新的 ES6 中,这种用法来自 javascript 的 Promise。这是我的代码

async function saveMateriaPrima(event) {
console.log('Guardando producto');

event.preventDefault();
let dataForm = new FormData(formMatPrima)
let url = formMatPrima.action

fetch(url, {
method: 'POST',
body: dataForm
})
.then(function(response){
console.log(response);

if(response.ok){
let producto = document.getElementById('id_nombre').value
console.log(`${producto} guardado correctamente.`);

document.getElementById('id_nombre').value = ''
$('#modal-crearmateriaprima').modal('hide')

}else{
throw "Error en la llamada Fetch"
}
})
.catch(function(err){
console.log(err);
})
}

它适用于您的代码,但我无法获取新对象的 pk。我希望这对您有所帮助,并可以改进此代码以获取 pk 数据。

关于jquery - 使用 AJAX 的 Django CreateView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48755492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com