2013-08-18 8 views
0

шаблон index.html, откуда я загрузке формы из forms.html шаблона:функция jquery.load не может загрузить CSRF токен шаблон Фрон Джанго, CSRF маркер отсутствует

{% extends 'base.html' %} 

{% load static %} 

{% block title %} jQuery Load Function {% endblock %} 

{% block extrahead %} 

<script type="text/javascript" src=" {% static "learn_static_files/scripts/jquery.min.js" %} "></script> 


<script> 
    $('document').ready(function(){ 
     $("#register").on("click", function(){ 
       $("#register_signup").load("{% url 'learn.views.get_latest_news' %} #register"); 
     }); 
     $("#signIn").on("click", function(){ 
       $("#register_signup").load("{% url 'learn.views.get_latest_news' %} #signin"); 
     }); 
    }); 
</script> 
{% endblock %} 

{% block content%} 
<div id="register">Register</div> 
<div id="signIn">Sign In</div> 
<div id="register_signup"></div>   
{% endblock %} 

forms.html откуда форма является нагрузкой, которая содержит CSRF токен:

{% extends 'base.html' %} 
{% block content %} 
<div id="register"> 
<form action="/learn/register/" method="post"> 
    {% csrf_token %} 
    <p> 
     <label for="name">name</label> 
     <input type="text" placeholder="name" name="name"> 
    </p> 
    <p> 
     <label for="username">Username</label> 
     <input type="text" placeholder="username" name="username"> 
    </p> 
    <p> 
     <label for="password">Password</label> 
     <input type="password" name="password"> 
    </p> 
    <p> 
     <label for="varify_password">Varify Password</label> 
     <input type="password" name="varify_password"> 
    </p> 
    <p> 
     <input type="submit" name="register" value="register"> 
    </p> 
</form> 
</div> 

<div id="signin"> 
<form action="/learn/sign_in/" method="post"> 
    {% csrf_token %} 
    <p> 
     <label for="username">Username</label> 
     <input type="text" placeholder="username" name="username"> 
    </p> 
    <p> 
     <label for="password">Password</label> 
     <input type="password" name="password"> 
    </p> 
    <p> 
     <input type="submit" name="signin" value="sign in"> 
    </p> 
</form> 
</div> 

{% endblock %} 

views.py:

from django.shortcuts import render_to_response 
from django.template.loader import render_to_string 
from django.template import RequestContext 

from learn.models import Registration 
from learn.forms import RegistrationForm 
from django.contrib.auth.models import User 

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

def get_latest_news(request): 
    return render_to_response('forms.html') 

def register(request): 
    if request.method == 'POST': 
    form = RegistrationForm(request.POST) 
    if form.is_valid(): 
     user = User(username=form.cleaned_data['username'],password=form.cleaned_data['password']) 
     user.save() 
     registered_user = Registration(user=user, name=form.cleaned_data['name']) 
     registered_user.save() 
     return HttpResonse('form is successfully submitted') 
    else: 
     return render_to_response('forms.html',{'form':form},context_instance=RequestContext(request)) 
else: 
    form = RegistrationForm() 
    return render_to_response('forms.html',{'form':form},context_instance=RequestContext(request)) 

Я зову jquery.load функцию а n индексировать индекс div # register_signup при событии клика. Если регистрационная форма вызывается непосредственно из url, используя регистр, то она отображается без проблем, и csrf_token также доступен там, но при загрузке этой формы через функцию загрузки jquery отсутствует токен csrf.

Пожалуйста, предложите мне, где я делаю неправильно. Я хочу загрузить форму регистрации и signin внутри index.html.

ответ

0
+0

это было на самом деле ошибка в index.html шаблона в JavaScript разделе, где я звонил неправильный вид. Кстати, для решения этой ошибки я использовал отладчик pdb, который показал некоторые полезные сообщения трассировки ... –