2013-09-26 30 views
0

(通讯)的形式我想打一个通讯系统和Django + AJAX 其实,我有:的Django +保存在阿贾克斯

#newsletter/urls.py 
from django.conf.urls import patterns, include, url 

urlpatterns = patterns('newsletter.views', 
    url(r'^subscribe/', 'subscribe', name='newsletter_subscribe'), 
) 

#views.py 
from django.shortcuts import render_to_response 
from newsletter.models import Member 


def subscribe(request): 
    fullname = request.POST.get('fullname', None) 
    email = request.POST.get('email', None) 
    very_exist = Member.objects.all() 
    if email in very_exist: 
     error = "Votre adresse email est déjà inscrite à la newsletter." 

    new_subscriber = Member(fullname=fullname, email=email) 
    new_subscriber.save() 

和HTML

<form method="post" action="{% url 'newsletter:newsletter_subscribe' %}" id="frmnewsletter"> {% csrf_token %} 
    <div> 
     <label for="nltname">Your Name:</label> <input type="text" name="name" class="textboxnewsletter" id="nltname" /><br /> 
     <label for="nltemail">Email Address:</label> <input type="text" name="email" class="textboxnewsletter" id="nltemail" /><br /> 
     <input type="submit" name="submitsubscribe" class="submitsubscribe" value="Subscribe" /> 
     <div class="clear"></div> 
    </div> 
</form> 

我如果用户已经将她的电子邮件保存在我的数据库或已保存成功的消息中,则可以使用ajax创建我的函数,以便创建我的函数 您可以帮助我创建它吗?请注意我的表单位于我的“base.html”,我不想使用如果可能的templatetags或forms.py系统。但我按照你的代码,如果你可以帮我

回答

0

如果你必须使用ajax这一点,那么我建议使用jQuery的$ .ajax()函数。 This page在django + ajax上有很好的写法,这对我有很大的帮助。

虽然你不需要ajax。如果您真的想要,但不能使用模板标签,则可以避免使用表单。我认为这应该做你想做的事情,或者至少把你推向正确的方向。

# views.py 

from django.http import HttpResponse, HttpResponseRedirect 
from django.shortcuts import render 

from newsletter.models import Member 

def subscribe(request): 
    if request.method == 'POST' 
     fullname = request.POST['name'] 
     email = request.POST['email'] 
     very_exist = [m.email for m in Member.objects.all()] 
     if email in very_exist: 
      error = "Votre adresse email est déjà inscrite à la newsletter." 
      return HttpResponse({'error': error}) 
      # return render(request, 'base.html', {'error': error}) # or this, I'm not sure 

     new_subscriber = Member(fullname=fullname, email=email) 
     new_subscriber.save() 

     return HttpResponseRedirect('/success/') 

    return render(request, 'base.html') 
在base.html文件

而且地方:

{% if error %} 
    <p class='error-msg'>{{ error }}</p> 
{% endif %}