- 创建 add.py:
from django.http import HttpResponse
text = ''' <form method="post" action="/add/">
<input type="text" name="a" value="%d"> + <input type="text" name="b" value="%d">
<input type="submit" value=" = "> <input type="text" value="%d">
</form> '''
def index(request):
if request.POST.has_key( ' a ' ):
a = int(request.POST[ ' a ' ])
b = int(request.POST[ ' b ' ])
else :
a = 0
b = 0
return HttpResponse(text % (a, b, a + b))
注意 action 为 /add/, 在Django中链接一般都要带有 '/', 不然有可能得不到 Post 的数据。
这里有一个方法index, 所有在 view 中的方法第一个参数都会由 Django 传入 request 对象,它就是请求数据对象, 由Django自动生成。其中有 GET 和 POST 属性, 分别保存不同的提交方式的数据,都可以象字典一样工作。 - 修改urls.py:
from django.conf.urls.defaults import *
urlpatterns = patterns( '' ,
# Example:
# (r'^testit/', include('newtest.apps.foo.urls.foo')),
(r ' ^$ ' , ' newtest.helloworld.index ' ),
(r ' ^add/$ ' , ' newtest.add.index ' ),
# Uncomment this for admin:
# (r'^admin/', include('django.contrib.admin.urls')),
)
以增加对 add 的 url 映射。 - 启动web server 并测试
http://localhost:8000/add
补充:
- form中的"method=post", 也可以get, 但在Django的设计风格中认为, 使用POST表示要对数据进行修改,使用GET则只是获取。
- 方法中的参数时从url中通过正则表达式解析出来的,或者是在 url_conf(即urls.py文件)中指定。 使用request.POST 或 request.GET或者另一个通吃的方法 request.REQUESt, 它们都是字典。