2013-09-26 34 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 %}