【发布时间】:2017-11-30 14:05:43
【问题描述】:
详细.html:
<form id="answer_form" class="form-horizontal" action="{% url 'puzzle:update' puzzle.id %}" method="POST" onSubmit="return ValidateAnswer();">
{% csrf_token %}
<p>Please entry your answer below: (Case insensitive)</p>
<div class="form-group col-xs-12">
<input id="player_answer" maxlength="30" name="player_answer" type="text">
</div>
<div class="form-group col-xs-12">
<button id="submit_answer_btn" class="btn btn-success" type="submit">Submit</button>
</div>
</form>
<script>
function ValidateAnswer() {
var player_answer = document.getElementById("player_answer");
if(player_answer.value == {{ puzzle.answer }}) {
alert("Congratulations!");
} else {
alert("Wrong answer!");
return false;
}
}
</script>
在 url.py 中
app_name = 'puzzle'
urlpatterns = [
url(r'^(?P<pk>[0-9]+)/$', login_required(views.PuzzleDetailView.as_view()), name='detail'),
url(r'^(?P<puzzle_id>[0-9]+)/update/$', views.update_user_game_history, name='update'),
]
在views.py中
class PuzzleDetailView(DetailView):
model = Puzzle
template_name = 'puzzle/detail.html'
def update_user_game_history(request, puzzle_id):
player_game_history = PlayerGameHistory.objects.get(user=request.user)
solved_puzzle = Puzzle.objects.get(id=puzzle_id)
player_game_history.score += solved_puzzle.point
player_game_history.save()
return HttpResponseRedirect('/')
我要做的是点击 Submit 按钮,通过第二个 url,转到 views.py 中的 update_user_game_history 功能。
但是,每次我提交时,流程都会尝试通过第一个 url 转到 PuzzleDetailView。我得到 Method Not Allowed (POST): /2/ in terminal
【问题讨论】:
-
请显示
ValidateAnswer()javascript函数的代码。 -
呈现的表单标签是什么样的(点击浏览器中的查看源代码)。你的
{% url %}标签对我来说看起来不错。确保您已保存所有打开的文件并重新启动服务器,以确保您确实在运行您认为的代码。