helloxielan 2014-11-20 08:37 采纳率: 0%
浏览 40

Django Ajax验证

i've been trying to figure out how to use ajax in my django for a while but I coulnt find a solution.

Here is my view.py:

from django.shortcuts import render, render_to_response, RequestContext, HttpResponseRedirect
from .forms import SignUpForm
from django.contrib import messages
# Create your views here.


def home(request):

    form = SignUpForm(request.POST or None)


    if form.is_valid():
        save_it = form.save(commit=False)
        save_it.save()
        # messages.success(request, 'Thank you for joining!')
        # return HttpResponseRedirect('/thank-you/')


    return render_to_response("home.html",
                                 locals(),
                                  context_instance=RequestContext(request))

the is the model.py

from django.db import models
from django.utils.encoding import smart_unicode


# Create your models here.

class SignUp(models.Model):
    first_name = models.CharField(max_length=120, null=True, blank=True)
    last_name = models.CharField(max_length=120, null=True, blank=True)
    email = models.EmailField()
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)


    def __unicode__(self):
        return smart_unicode(self.email)

This is the html part

<form method='POST' action=''> {% csrf_token %}
    {{ form.as_p }}
    <input type='submit' class='btn btn-success'>
</form>
</div>

I've tried many method but none of them is working . can someone help

Im trying to log a thank you message after the user submitted their information. I want it stay still instead of refreshing. and how to use ajax to replace the built in error message when the email field is empty.

</div>
  • 写回答

3条回答 默认 最新

  • weixin_33739541 2014-11-20 09:42
    关注

    You'll need to send an Ajax request using jQuery or XMLHttpRequest Object. (which I didn't see you doing in the code provided)

    For using jQuery, you'll need to do something like this:

    <script>
    $.ajax({
        type: "POST",
        url: "url_to_your_view",
        data: $('#id_of_your_form').serialize()
    }).done(function(msg) {
        log_thank_you_msg();  // log thank you message using JavaScript or jQuery
    });    
    </script>
    

    Also, in your view, you can do something like this to return your thank you message:

    if form.is_valid():
        save_it = form.save(commit=False)
        save_it.save()
        ...
        return render_to_response("home.html", RequestContext(request, {'message': 'thank you'}))
    else:
        handle_the_error()  # Return error messages or do some error handling
    
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器