我是Django的新手。即使在阅读,观看和遵循许多教程和指南之后,事情仍然没有为我而来,我需要帮助。
我正在制作一个非常简单的计算器应用程序,以准备一个更复杂的计算器应用程序,我将从Python shell重构/移植。简单计算器的基本思想是:我在1个应用程序上有4个页面。它们分别包含加,减,乘和除功能。我有一个工作侧菜单(使用引导程序和一些复制的代码)在页面之间导航。每个页面上都有一个表单,其中包含两个字段和一个提交按钮,并且应该返回与页面关联的操作的结果。现在我只关注“添加”页面,因为其他页面只是一个复制问题。
目前,我认为我有一个工作表单来获取两个输入,但我不知道如何将这两个输入作为我可以添加的变量来获取结果。
到目前为止,这是我的代码:
views.py
from __future__ import unicode_literals
from django.http import HttpResponse
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from .forms import AddForm
@csrf_exempt
def web_adder(request):
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = AddForm(request.POST)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
# redirect to a new URL:
return web_adder_out(form)
# if a GET (or any other method) we'll create a blank form
else:
form = AddForm()
return render(request, 'addercontent.html', {'form': form})
def web_adder_out(request, form):
return render(request, 'addercontentout.html', {'content':[form.addend0 + form.addend1]})
#haven't gotten to this stuff yet
def web_subtracter(request):
return render(request, 'subtractercontent.html')
def web_multiplier(request):
return render(request, 'multipliercontent.html')
def web_divider(request):
return render(request, 'dividercontent.html')
urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.web_adder, name='web_adder'),
url(r'^web_sub$', views.web_subtracter, name='web_subtracter'),
url(r'^web_mul$', views.web_multiplier, name='web_multiplier'),
url(r'^web_div$', views.web_divider, name='web_divider'),
]
forms.py
from django import forms
class AddForm(forms.Form):
addend0 = forms.CharField(label='first addend', max_length=100)
addend1 = forms.CharField(label='second addend', max_length=100)
addercontent.html
{% extends "header.html" %}
{% block content %}
<p>This is a web adder</p>
<form action="" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
{% endblock %}
addercontentout.html
{% extends "header.html" %}
{% block content %}
{% for c in content%}
<p>Result: {{c}}</p>
{% endfor %}
{% endblock %}
(我知道我没有展示很多html文件,但它们无关紧要)
在上面的代码中,我知道web_adder中的form
与web_adder_out中的form
不同,这就是我不知所措的地方。虽然看到其他错误我也不会感到惊讶。
我正在使用Python 2.7。 提前致谢。
答案 0 :(得分:1)
您可以像这样处理表单中的每个字段:
form.cleaned_data['field_name']
这可以获得该字段的实际值。
您的表单示例如下:
form.cleaned_data['addend0']
将为您提供addend0
字段的POST值。
希望这有帮助!