У меня есть форму, где пользователь вводит ответ на вопрос. Если ответ верный, пользователь перенаправляется на следующий вопрос.Предотвращение доступа пользователя к последующему URL-адресу в django
шаблон URL Я следую за это, 127.0.0.1:8000/question/1
127.0.0.1:8000/question/2 и так далее.
Я отправляю форму в тот же вид, где происходит проверка. Но без проверки формы пользователь может получить доступ к следующему URL-адресу и предыдущему URL-адресу. Прямо сейчас я не обрабатываю регистрацию для пользователя. Любой пользователь может пройти тест. поэтому в этом случае Как запретить пользователю напрямую обращаться к URL-адресам?
Я знаю, что это простой базовый вопрос. Новичок в обучении джанго путем создания чего-то. Любая помощь?.
Заранее спасибо
{% extends 'base.html' %}
{% block title %}{% endblock %}
{% block body_block %}
<p><strong>Your question {{ quesno_id.id}} of {{ total_ques }}: </strong></p>
"{{ question.que }}"
<p><strong>Type your answer here :</strong></p>
<form id='song_form' method = 'post' action="">{% csrf_token %}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in form.visible_fields %}
{{ field.errors }}
{{ field.help_text }}
{{ field }}
{% endfor %}
<br></br>
<input type ="submit" name="submit" value="Submit"/>
</form>
{% endblock %}
def display_question(request,question_id):
context = RequestContext(request)
try:
quesno_id = {'id':question_id}
data = data.objects.get(id=question_id)
total_ques = data.objects.all().count()
except data.DoesNotExist:
pass
if request.method == 'POST':
form = que_form(request.POST)
if form.is_valid():
user_answer = form.cleaned_data['answer']
if data.name.strip() == user_answer.strip():
if int(question_id) < int(total_ques):
return HttpResponseRedirect("/question/%s/" % (int(question_id)+1))
else:
return HttpResponse('Game over')
else:
return HttpResponse("Your answer is wrong")
else:
print form.errors
else:
form = que_form()
return render_to_response('display_question.html',{'form':form,'data':data,'quesno_id':quesno_id,'total_ques':total_ques},context)
from django import forms
class que_form(forms.Form):
answer = forms.CharField(widget=forms.TextInput())
Да, это 'data.que'. Моя ошибка. Я реализовал то, как вы сказали, это работает, но поскольку я передаю форму на ту же страницу (display_question.html), предыдущее значение, введенное в текстовое поле, остается неясным. Как визуализировать новую форму без ранее введенного значения? – user
См. Мой комментарий ... Я не уверен на 100%, я понимаю, о чем вы спрашиваете, но посмотрите, что я предлагаю, что вам нужно. –
Я попробовал. Данные очищаются в текстовом поле справа даже перед тем, как сделать запрос POST для поддержки кода представления django, потому что я вызываю функцию Js, чтобы очистить значение при создании формы. Таким образом, я снова отобрал пустую форму. Это сработало :) Спасибо за Помогите – user