一 、在网页上做加减法
1. 采用 /add/?a=4&b=5 这样GET方法进行
1 2 3 |
|
自动生成目录大致如下(因不同的 Django 版本有一些差异,如果差异与这篇文章相关,我会主动提出来,没有说的,暂时可以忽略他们之间的差异,后面的教程也是这样做):
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
我们修改一下 calc/views.py文件
1 2 3 4 5 6 7 8 |
|
注:request.GET 类似于一个字典,更好的办法是用 request.GET.get(‘a‘, 0) 当没有传递 a 的时候默认 a 为 0
接着修改 zqxt_views/urls.py 文件,添加一个网址来对应我们刚才新建的视图函数。
Django 1.7.x 及以下的同学可能看到的是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Django 1.8.x及以上,Django 官方鼓励(或说要求)先引入,再使用。
1 2 3 4 5 6 7 8 9 |
|
注意:低版本的 Django 也可以先引入,再使用
我们打开开发服务器并访问
1 2 3 |
|
打开网址:http://127.0.0.1:8000/add/ 就可以看到
MultiValueDictKeyError at /add/
这是因为我们并没有传值进去,我们在后面加上 ?a=4&b=5,即访问 http://127.0.0.1:8000/add/?a=4&b=5
注意在最后不要加一个斜杠
就可以看到网页上显示一个 9,试着改变一下a和b对应的值试试看?
2. 采用 /add/3/4/ 这样的网址的方式
前面介绍的时候就说过 Django 支持优雅的网址
我们接着修改 calc/views.py文件,再新定义一个add2 函数,原有部分不再贴出
1 2 3 |
|
接着修改 zqxt_views/urls.py 文件,再添加一个新的 url
Django 1.7.x 及以下:
1 |
|
Django 1.8.x 及以上:
1 |
|
这里的name=‘add2‘关系不大可能只是为了识别,换成其他的没影响
我们可以看到网址中多了 (\d+), 正则表达式中 \d 代表一个数字,+ 代表一个或多个前面的字符,写在一起 \d+ 就是一个或多个数字,用括号括起来的意思是保存为一个子组(更多知识请参见 Python 正则表达式),每一个子组将作为一个参数,被 views.py 中的对应视图函数接收。
我们再访问 http://127.0.0.1:8000/add/4/5/ 就可以看到和刚才同样的效果,但是这回网址更优雅了