在Django中,当你接受主键作为用户的文本输入,并希望在用户点击“加载”按钮后自动填充所有模型表单时,你可以使用AJAX来实现这一功能。以下是一个基本的步骤指南和示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Auto-fill Form</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<form id="myForm">
<input type="text" id="pkInput" placeholder="Enter Primary Key">
<button type="button" id="loadButton">Load Data</button>
<!-- 其他表单字段 -->
<input type="text" id="field1" name="field1">
<input type="text" id="field2" name="field2">
<!-- 更多字段... -->
</form>
<script>
$(document).ready(function() {
$('#loadButton').click(function() {
var pk = $('#pkInput').val();
$.ajax({
url: '/load-data/', // Django视图的URL
data: {
'pk': pk
},
dataType: 'json',
success: function(data) {
$('#field1').val(data.field1);
$('#field2').val(data.field2);
// 设置其他字段的值...
}
});
});
});
</script>
</body>
</html>
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from .models import YourModel
@csrf_exempt
def load_data(request):
if request.method == 'POST':
pk = request.POST.get('pk')
try:
instance = YourModel.objects.get(pk=pk)
data = {
'field1': instance.field1,
'field2': instance.field2,
# 添加其他字段...
}
return JsonResponse(data)
except YourModel.DoesNotExist:
return JsonResponse({'error': 'Record not found'}, status=404)
return JsonResponse({'error': 'Invalid request'}, status=400)
from django.urls import path
from .views import load_data
urlpatterns = [
path('load-data/', load_data, name='load-data'),
# 其他URL模式...
]
如果在实现过程中遇到问题,可以检查以下几点:
通过这种方式,你可以实现一个动态且用户友好的表单预填充功能。
领取专属 10元无门槛券
手把手带您无忧上云