Привет, братюни!
Столкнулся с проблемой (вероятнее всего я что то упустил в доках). Весь корень зла в сообщениях, задача показать сообщение после подписки. Этот код работает и показывает сообщение, но с перезагрузкой страницы. Если я уберу из sleep.js строку location.reload();
то соответственно сообщение не показывается пока страницу не перезагрузишь... перепробовал разные варианты, но видимо не туда рою, как заставить отработать messages.success(request, u'Вы подписались на рассылку')
без перезагрузки страницы... если есть мысли буду безмерно всем благодарен )
view.py:
from django.shortcuts import render, render_to_response, RequestContext
from django.http import HttpResponseRedirect
from django.template.response import TemplateResponse
from .forms import SubscrForm
from django.contrib import messages
from django.shortcuts import redirect
from dbmail.models import MailGroupEmail
from django.http import HttpResponse
from django.conf import settings
def post_form(request):
if request.method == 'POST':
form = SubscrForm(request.POST)
if form.is_valid():
user_name = form.cleaned_data['user_name']
user_email = form.cleaned_data['user_email']
try:
mail_user = MailGroupEmail.objects.get(email=user_email)
except MailGroupEmail.DoesNotExist:
new_user = MailGroupEmail(email=user_email, name=user_name, group_id=2)
new_user.save()
messages.success(request, u'Вы подписались на рассылку')
else:
messages.warning(request, u'Вы уже подписаны на рассылку')
return HttpResponse('OK')
subscribe.html:
<div class="block-subscribe">
<form id="fond-subscribe" action='/subscribe/post_url/' class="form-group" method="post">
{% csrf_token %}
<label class="control-label">Ваше имя</label>
<input id="id_user_name" maxlength="200" name="user_name" type="text" value="{{ user_name }}">
<label class="control-label">E-mail</label>
<input id="id_user_email" maxlength="200" name="user_email" type="email" value="{{ user_email }}">
<input id="subscr" class="btn btn-lk" type="submit" value="Подписаться" />
</form>
</div>
sleep.js:
window.onload = function(){
$('#fond-subscribe').on('submit', function(e){
e.preventDefault();
$.ajax({
type: 'POST',
url: '/subscribe/post_url/',
data: {
user_name: $('#id_user_name').val(),
user_email: $('#id_user_email').val(),
csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val(),
},
success: function(response){
$('#id_user_name').val('');
$('#id_user_email').val('');
location.reload();
},
error: function(response){
console.log("error: "+response)
}
});
});
}