ajax - Django:通过 Ajax 使用表单填充模式
问题描述
我正在尝试在模式中显示一个预填充的表单,以便用户可以单击一个项目,该模式打开时会显示一个表单,其中包含用户可以编辑和保存的该项目的数据。
我可以使用 json 序列化程序将数据从视图发送到模式,但我找不到如何发送表单。
当我测试这个时,我收到一个错误声明"Object of type FormularioTareas is not JSON serializable"
问题似乎很清楚,我无法通过 json 响应发送表单。我该如何处理?
提前致谢!
模板中的模态调用
<form name="form" action="#" id="form_tarea_{{tarea.id}}" method="POST">
{% csrf_token %}
<input name="id" id="tarea_id_submit" type="text" value="{{tarea.id}}" hidden="true"/>
<a href="" id="{{tarea.id}}" class="show_tarea" data-toggle="modal" >Este link</a>
</form>
Ajax 脚本
在这里,我现在$('#caca').text(tarea_data.caca);
仅用于测试我可以正确地将一些信息发送到模态。有用。
我想我应该将该“文本”类型更新为另一种才能工作。
<script>
$(function(){
$('.show_tarea').on('click', function (e) {
e.preventDefault();
let tarea_id = $(this).attr('id');
$.ajax({
url:'/catalog/tareas-detail/',
type:'POST',
data: $('#form_tarea_'+tarea_id).serialize(),
success:function(response){
console.log(response);
$('.show_tarea').trigger("reset");
openModal(response);
},
error:function(){
console.log('something went wrong here');
},
});
});
});
function openModal(tarea_data){
$('#caca').text(tarea_data.caca);
$('#modal_tareas').modal('show');
};
</script>
风景
def TareaDetailView(request):
context = {}
tareas = Tareas.objects.values()
context[tareas] = Tareas.objects.all()
if request.method == 'POST' and request.is_ajax():
ID = request.POST.get('id')
tarea = tareas.get(pk=ID) # So we send the company instance
tareas_form = FormularioTareas(tarea)
caca = ID
return JsonResponse(tareas_form, safe=False)
else:
return render(request, 'catalog/artista.html', context)
解决方案
Django 表单不是 json 可序列化的。要么将模型传递给 json 响应,要么将表单作为 text/json 返回。
return JsonResponse(serializers.serialize('json', tarea), safe=False)
推荐阅读
- html - 如何在标签上设置多个字体以显示文本?
- django - Django:仅当用户提交表单或保存模型时才允许用户进一步访问
- python - AWS Glue 执行者死亡
- c# - Atata:如何跳过 NoSuchElementException?
- docker - 将 filebeat 连接到 Kibana
- jenkins - 如果 Maven 测试失败,如何使声明性 Jenkins 管道失败?
- javascript - 来自 AJAX 的 .NET Core 控制器输入始终为空
- firebase - 在 Firebase 子目录中添加 Ghost 博客
- python-3.x - Python3没有根据另一个字典正确排序列表
- python - Python2 base64 严格解码仍然默默地忽略无效字符