2014-12-15 6 views
0

Я работаю с django и получаю форму загрузки boottrap3, которую я отправляю после проверки jquery. Это работает корректно, и теперь я хочу перенаправить на страницу загрузки «спасибо». Я не совсем уверен, как это сделать в Django. В моей главной странице, в форме я добавил:Django bootstrap modal после отправки формы

 <div class="row"> 
      <div class="col-lg-5 col-lg-offset-1 col-sm-push-6 col-sm-6" 
       <div class="clearfix"></div> 
       <h2 class="section-heading">Registration form</h2> 
         {% block 'form' %} 
        {% endblock %} 
      </div> 
      <a data-toggle="modal" href="#thanksModal">thanksModal</a> 
      {% include "thanks.html" %} 
      <div class="col-lg-5 col-sm-pull-6 col-sm-6"> 
       <img class="img-responsive" src="../static/img/dog.png" alt="" /> 
      </div> 
     </div> 

Сам модальный является:

<div class="modal hide" id="thanksModal"> 
    <div class="modal-header"> 
    <button type="button" class="close" data-dismiss="modal">×</button> 
    </div> 
    <div class="modal-body"> 
     <h1>Thank you</h1> 

    </div> 
    <div class="modal-footer"> 
     <input name="cancel" class="btn" type="submit" value="Cancel"/> 
    </div> 
</div> 

На мой взгляд, у меня есть:

def contact(request): 
    errors = [] 
    if request.method == 'POST' 

    if not request.POST.get('subject', ''): 
     errors.append('Enter a subject.') 
    if not request.POST.get('message', ''): 
     errors.append('Enter a message.') 
    if request.POST.get('email') and '@' not in request.POST['email']: 
     errors.append('Enter a valid e-mail address.') 
    if not errors: 
     send_mail(
      request.POST['subject'], 
      request.POST['message'], 
      request.POST.get('email', '[email protected]'), 
      ['[email protected]'], #email address where message is sent. 
     ) 
     return HttpResponseRedirect('/thanks/') 
return render(request, 'form.html',{'errors': errors}) 

def thanks(request): 
    return render_to_response('thanks.html') 

Как в настоящее время, Я вижу непривлекательную ссылку, которая говорит «спасибо» на главной странице, и после отправки перенаправление происходит на странице «контакт». Как я могу заставить это работать?

ответ

1

Если я правильно понял, после того, как была отправлена ​​контактная форма, вы хотите, чтобы модальная фраза говорила спасибо.

Вместо:

return HttpResponseRedirect('/thanks/') 

Do:

import json 
... 
return HttpResponse(json.dumps({"success":True}), content_type="application/json") 

И в вашем JS, которая представляет форму проверить реакцию на успех перед загрузкой формы HTML:

if (typeof jqXhr.success != 'undefined') { 
    $('#success-modal').modal('show'); 
} else { 
    $('#my-form').html(jqXhr); 
} 
+0

Спасибо очень помогло мне начать собирать кусочки здесь. Я собираюсь спросить о продолжении из-за некоторых ошибок BTW. С уважением - Билл. – user61629

Смежные вопросы