如何在Django中使用带有JsonResponse的AJAX创建新用户?
任务很简单,一个人可以输入姓名,电子邮件和密码按“提交”,并在表单下方显示他的帐户信息,而不需要刷新页面。
我不知道我哪里出错了,即使我在检查管理员时设法转到ajax成功function我发现没有创建新用户。
无论如何,提前谢谢。 此外,也许有人可以提供一些与ajax相关的教程或关于djangorestframework的一些信息。
models.py
class User(models.Model): name = models.CharField(max_length=255) email = models.EmailField() password = models.CharField(max_length=255)
urls.py
from django.conf.urls import url, include from ajaxtest import views urlpatterns = [ url(r'$', views.home, name='home'), url(r'user/create/$', views.userCreate, name='create'), ]
views.py
def home(request): users = User.objects.all() return render(request, 'ajaxtest/index.html', {'users': users}) def userCreate(request): if request.method == 'POST': name = request.POST.get('ajaxName', '') email = request.POST.get('ajaxEmail', '') password = request.POST.get('ajaxPassword', '') User.objects.create( name = name, email = email, password = password, ) response_data = {} return JsonResponse(response_data)
的index.html
{% extends 'ajaxtest/base.html' %} {% load staticfiles %} {% block content %} Form
{% for user in users %} - {{user.name}} - {{user.email}} - {{user.password}}
{% endfor %}
$(document).on('submit', '#user_form', function(event) { event.preventDefault(); $.ajaxSettings.traditional = true; $.ajax({ type: 'POST', url: '{% url "create" %}', dataType: 'json' data: { ajaxName: $('#inputName').val(), ajaxEmail: $('#inputEmail').val(), ajaxPassword: $('#inputPassword').val(), csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val() }, success: function(response) { alert($('#inputName').val() +" Account Created!"); } }); })
{% endblock content %}
在主页面中将“$”更改为“^ $”。 在ajax调用中,在dataType:’json’之后添加逗号。 这对我有用。 如果这对您有用,请告诉我。 确保在主url文件中包含您的ajaxtesturl。
urlpatterns = [ url(r'^', include('ajaxtest.urls')), ]