Ребят, всем привет.
Проблема: форма отдает {% csrf_token %}, но вот вьюшкой принять её и обработать не получается.
Сама форма
{% block login1 %}
<div class="large-offset-3 large-6 columns">
<form action="/auth/login/" method="post">
{% csrf_token %}
<label for="username">Имя пользователя</label>
<input type="text" name="username" id="username">
<label for="password">Пароль</label>
<input type="password" name="password" id="password">
{% if login_error %}
<label class="error">{{ login_error }}</label>
{% endif %}
<input class="button" type="submit" value="Войти">
</form>
</div>
{% endblock %}
Сама вьюшка - взял способ с нета
def login(request):
args = {}
args.update(csrf(request))
if request.POST:
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = auth.authenticate(username=username, password=password)
if user is not None:
auth.login(request, user)
return redirect('/')
else:
args['login_error'] = "Пользователь не найден"
return render_to_response('login.html', args)
else:
return render_to_response('login.html', args)
В итоге, появляется ошибка, что токена нет, либо он битый. Если например закрываю вьюшка декоратором @csrf_exempt (выключая токен), то форма сама отрабатывает на ура. Подскажите, плиз.
Плюс есть беда вот с такой вьюшкой тоже (тоже токен не знаю, как обработать):
def addcomment(request, step_id):
# args = {}
# args.update(csrf(request))
if request.POST and ('stop_comment' not in request.session):
mentionn = Step(id=step_id)
mention_text = request.POST.get('mention_text', '')
mention_digit = request.POST.get('mention_digit', '')
mentionn_obj = Mention(mentionn=mentionn, mention_text=mention_text, mention_digit=mention_digit)
mentionn_obj.save()
request.session.set_expiry(864000) #Блок функции сессией на 10 дней.
request.session['stop_comment'] = True
return redirect('/step'+ step_id)