您的位置:首页 > 编程语言 > Go语言

Django中文官方版08-创建简单表单

2017-05-18 17:01 344 查看
注:表单传递方式类似jsp+servlet1.更新polls/templates/polls/detail.html内容输入:
<h1>{{ question.question_text }}</h1>

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}

<form action="{% url 'polls:vote' question.id %}" method="post">
{% csrf_token %}
{% for choice in question.choice_set.all %}
<input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
<label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />
{% endfor %}
<input type="submit" value="Vote" />
</form>
注:{{}}代表参数值,{%%}代表语意标签2.打开polls/urls.py文件输入以下内容:
url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),
注:使用vote方法来处理表单提交的内容3.打开polls/views.py文件修改vote方法的内容:
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect, HttpResponse
from django.urls import reverse

from .models import Choice, Question
# ...
def vote(request, question_id):
question = get_object_or_404(Question, pk=question_id)
try:
selected_choice = question.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
# Redisplay the question voting form.
return render(request, 'polls/detail.html', {
'question': question,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.votes += 1
selected_choice.save()
# Always return an HttpResponseRedirect after successfully dealing
# with POST data. This prevents data from being posted twice if a
# user hits the Back button.
return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))
:request_POST['choice']代表通过post方式传递接收道德参数choice
4.处理表单结束后跳转处理
打开polls/views.py
修改results方法内容:
from django.shortcuts import get_object_or_404, render

def results(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/results.html', {'question': question})
5.添加results.html模板文件
在template/polls下面添加results.html文件
输入以下内容:
<h1>{{ question.question_text }}</h1>

<ul>
{% for choice in question.choice_set.all %}
<li>{{ choice.choice_text }} -- {{ choice.votes }} vote{{ choice.votes|pluralize }}</li>
{% endfor %}
</ul>

<a href="{% url 'polls:detail' question.id %}">Vote again?</a>
6.启动runserver,测试表单提交结果
python manage.py runserver
[code]输入127.0.0.1:8080
/polls/1/
原文摘自官方地址https://docs.djangoproject.com/en/1.11/intro/tutorial04/,本文只做精简化翻译,详细内容可去指定地址阅读
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息