2017-02-21 15 views
1

Я пробовал все, что я могу собрать с форумов, по-прежнему нужна помощь: Я продолжаю получать ошибку CSRF token missing or incorrect при отправке формы. Раньше это работало нормально, а затем я внес некоторые изменения, и теперь я не могу вернуться. Я использую {% csrf_token %} и RequestContext. Я пробовал использовать reverse, я проверил settings.py промежуточное ПО для csrf middleware, попробовал перезагрузить сервер, попытался использовать HttpResponse вместо HttpResponseRedirect и template.render(), попробовал URL-адрес вместо тега {% url%}. В других частях моего проекта я даже не использую RequestContext и она отлично работает ..Ошибка csrf с использованием csrf и запроса Context

signup_page.html:

<p>Sign Up Below 
</p> 
    <form action={% url 'signup_page' %} method="post"> 
    {% csrf_token %} 

    .... 

    Email 
    <input type="email" name="email" required="true"><br><br> 

    <input type="submit" value="POST"> 

</form> 

views.py

def signup_page(request): 
    template = loader.get_template('user_app/signup_page.html') 

    if request.method == "POST": 
     ... 
     email = request.POST['email'] 
     kwargs = { 
      'username':username, 'password':password, 'first_name':first_name, 
      'last_name':last_name, 'email':email 
     } 
     new_user = User.objects.create(**kwargs) 
     new_user.save() 

     context = { 
      'text':"POST", 'first_name':first_name 
     } 

     return HttpResponseRedirect(render('signup_page', context, context_instance =RequestContext(request))) 
    else: 
     return HttpResponse(template.render(RequestContext(request))) 

urls.py:

from django.conf.urls import url 
from user_app.views import signup_page, profile 

urlpatterns = [ 
    url(r'^signup', signup_page, name="signup_page"), 
    url(r'^profile', profile, name="profile") 
] 
+0

показать urls.py файл –

+0

обновляется с urls.py – ratrace123

+0

это может быть что-то вроде, когда я создать пользователя, чем-то Джанго авто журналы мне в? И поэтому я уже вошел в систему и пытался создать нового пользователя? – ratrace123

ответ

0
from django.shortcuts import render 

#create your views here 
def your_function(request): 
    #do whatever you want here... 
    context = {'any_data': 'you_want_to_send'} 
    return render(request,'your.html',context) 
+0

ОК это работает по какой-то причине, но я понятия не имею, почему ... знаете ли вы, почему HttpResponse не работает? – ratrace123

+0

@ ratrace123, да, поскольку сам рендеринг представляет собой httpresponse, который вы переносите объект ответа в другой объект ответа. Вот почему токен csrf скрывается в интерфейсе. Было бы неплохо, если бы вы приняли ответ. –

+0

это даже работает, когда я удаляю декоратор '@ csrf_protect' .. его как будто HttpResponse просто не работает с' csrf' .. – ratrace123