我正在尝试将数据从我的表单发送到带有 ajax 的视图,但我在 request.POST 中的表单字段是空的。提交期间我的字段确实包含数据。但是当我检查 request.POST 的内容时,表单数据仍然是空的。因此 form.is_valid 值始终为 False。我怎么解决这个问题? 这是我的表格
<form id="formId" method="post">
{% csrf_token %}
{{form.errors}}
{% for field in form %}
<div class="input-group mb-3">
<span class="input-group-addon bg-white">
<i class="{% if field.html_name == 'email' %}
fa fa-envelope
{% else %}
fa fa-user w-4
{% endif %}">
</i></span>
{{field}}
</div>
{% endfor %}
<div class="row">
<div class="col-12">
<button type="submit" id="btnRegister" class="btn btn-primary btn-block px-4">Créer le compte</button>
</div>
</div>
</form>
ajax
<script>
$(document).ready(function(){
$("#btnRegister").on("click",function(e){
var form = document.getElementById("formId");
function handleForm(event) { event.preventDefault(); }
form.addEventListener('submit', handleForm);
});
});
var serializeData = $("#formId").serialize();
var nom_agent = $("#id_nom_agent").val();
var prenom_agent = $("#id_prenom_agent").val();
var email = $("#id_email").val();
$.ajax({
dataType: 'json',
url: "{% url 'add_agent' %}",
type: 'post',
data: {
"csrfmiddlewaretoken" : "{{ csrf_token }}",
'nom_agent': nom_agent,
'nom_agent': prenom_agent,
'email': email,
},
success: function(data){
console.log("ok");
},
error: function(){}
});
</script>
我的观点如下
def add_agent(request):
if request.is_ajax():
if request.method=="POST":
print(request.POST)
form = RegisterForm(request.POST)
if form.is_valid():
nom_agent = form.cleaned_data["nom_agent"]
prenom_agent = form.cleaned_data["prenom_agent"]
email = form.cleaned_data["email"]
if Agent.objects.filter(nom_agent=nom_agent,prenom_agent=prenom_agent).exists():
statut = ["warning"]
response = "Un agent avec ces nom et prénom existe déja !"
else:
if User.objects.filter(email=email).exists():
statut = "warning"
reponse = "Cet email existe déjà"
else:
password = User.objects.make_random_password()
try:
user = User(email=email,password=password)
except:
print("gh")
return HttpResponse("Echec ajax")
user.save()
try:
agent = Agent(nom_agent=nom_agent,prenom_agent=nom_agent,user=user).save()
except:
user.delete()
return HttpResponse("Echec d'enregistrement du nouvel utilisateur !")
statut = "succes"
reponse = "Enregistrement effectué"
data = {"reponse": reponse}
reponse = json.dumps(data)
mimetype = 'application/json'
return HttpResponse(reponse, mimetype)
else:
form = RegisterForm()
return render(request,"elec_meter/register.html",{"form":form})
return HttpResponse("Erreur Ajax !")
我愿意接受任何评论和建议