Ошибка "CSRF token missing or incorrect" при передаче информации в форме - Python

Узнай цену своей работы

Формулировка задачи:

Вообщем создал я модели(не суть важно какие). Через админку добавил группу пользователей и соответственно права(разрешения) изменять(создавать новые, удалять) объекты моделей. А потом и пользователя с паролем и логином. При аутентификации пользователя использую следующее:
Листинг программы
  1. from django.shortcuts import render, render_to_response, redirect
  2. from tournament.models import Chessplayers, Rating
  3. from django.contrib import auth
  4. from django.contrib.auth.decorators import login_required
  5. from django.core.context_processors import csrf
  6. def auth_view(request):
  7. username = request.POST['username']
  8. password = request.POST['password']
  9. user = auth.authenticate(username=username,password=password)
  10. if user is not None:
  11. if user.is_active:
  12. auth.login(request, user)
  13. return redirect('/loggedin')
  14. else:
  15. return redirect('/disabled_account')
  16. else:
  17. return redirect('/invalid')
Листинг программы
  1. {% block header %}
  2. {% if forms.errors %}
  3. <p class="error">Sorry, that's not a valid username or password</p>
  4. {% endif %}
  5. <form action="/auth/" method="post">
  6. {% csrf_token %}
  7. <label for="username">User name:</label>
  8. <input type="text" name="username" id="username" value="">
  9. <label for="password">Password:</label>
  10. <input type="password" name="password" id="password" value="">
  11. <input type="submit" value="login">
  12. </form>
  13. {% endblock%}
Всё нормально работает, пользователь авторизуется, csrf_token и session_id в куках браузера (у меня хром) отображается. Потом я хочу создать новый объект для этого использую следующее:
Листинг программы
  1. {% block header %}
  2. <h2>Hi, {{ full_name }} you are now logged in!</h2>
  3. <p>Adding player to tournament table.</p>
  4. <form action="/addplayer_enter/" method="post">
  5. <label for="name">First name player:</label>
  6. <input type="text" name="name" id="name" value="">
  7. <label for="soname">Last name player:</label>
  8. <input type="text" name="soname" id="soname" value="">
  9. <label for="age">Age player:</label>
  10. <input type="text" name="age" id="age" value="">
  11. <input type="submit" value="Add player">
  12. </form>
  13. <p>Click <a href="/logout/">here</a> to logout.</p>
  14. {% endblock %}
Пробовал добавлять в шаблон {% csrf_token %} - результат не меняется, та же ошибка.
Листинг программы
  1. @login_required
  2. def addplayerr(request):
  3. if request.POST and form.is_valid():
  4. new_player = Players.objects.create(
  5. name=request.POST['name'],
  6. soname=request.POST['soname'])
  7. Age.objects.create(age=request.POST['age'], age_player_id=new_player_id)
  8. return redirect('/loggedin')
  9. else:
  10. return redirect('/')
Может кто пояснит как работает механизм обмена инфой через формы авторизованного пользователя, если это матчасть, то будьте добры тыкните в ссылку. Заранее спасибо.

Решение задачи: «Ошибка "CSRF token missing or incorrect" при передаче информации в форме»

textual
Листинг программы
  1. def login(request):
  2.     args={}
  3.     args.update(csrf(request))
  4.     return render_to_response('login.html',args,
  5.         context_instance=RequestContext(request, processors=[custom_proc]) )

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы