打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Django 视图与网址进阶

一 、在网页上做加减法

1. 采用 /add/?a=4&b=5 这样GET方法进行

django-admin.py startproject zqxt_viewscd zqxt_viewspython manage.py startapp calc

自动生成目录大致如下(因不同的 Django 版本有一些差异,如果差异与这篇文章相关,我会主动提出来,没有说的,暂时可以忽略他们之间的差异,后面的教程也是这样做):

zqxt_views/├── calc│   ├── __init__.py│   ├── admin.py│   ├── models.py│   ├── tests.py│   └── views.py├── manage.py└── zqxt_views    ├── __init__.py    ├── settings.py    ├── urls.py    └── wsgi.py

我们修改一下 calc/views.py文件

from django.shortcuts import renderfrom django.http import HttpResponsedef add(request):    a = request.GET['a']    b = request.GET['b']    c = int(a)+int(b)    return HttpResponse(str(c))

注:request.GET 类似于一个字典,更好的办法是用 request.GET.get('a', 0) 当没有传递 a 的时候默认 a 为 0


接着修改 zqxt_views/urls.py 文件,添加一个网址来对应我们刚才新建的视图函数。

Django 1.7.x 及以下的同学可能看到的是这样的:

from django.conf.urls import patterns, include, urlfrom django.contrib import adminadmin.autodiscover()urlpatterns = patterns('',    # Examples:    url(r'^add/$', 'calc.views.add', name='add'), # 注意修改了这一行    # url(r'^blog/', include('blog.urls')),    url(r'^admin/', include(admin.site.urls)),)

Django 1.8.x及以上,Django 官方鼓励(或说要求)先引入,再使用。

from django.conf.urls import urlfrom django.contrib import adminfrom calc import views as calc_viewsurlpatterns = [    url(r'^add/$', calc_views.add, name='add'),  # 注意修改了这一行    url(r'^admin/', admin.site.urls),]

注意:低版本的 Django 也可以先引入,再使用


我们打开开发服务器并访问

python manage.py runserver如果提示 Error: That port is already in use.在后面加上端口号8001,8888等python manage.py runserver 8001

打开网址: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 函数,原有部分不再贴出

def add2(request, a, b):    c = int(a) + int(b)    return HttpResponse(str(c))

接着修改 zqxt_views/urls.py 文件,再添加一个新的 url

Django 1.7.x 及以下:

    url(r'^add/(\d+)/(\d+)/$', 'calc.views.add2', name='add2'),

Django 1.8.x 及以上:

    url(r'^add/(\d+)/(\d+)/$', calc_views.add2, name='add2'),

我们可以看到网址中多了 (\d+), 正则表达式中 \d 代表一个数字,+ 代表一个或多个前面的字符,写在一起 \d+ 就是一个或多个数字,用括号括起来的意思是保存为一个子组(更多知识请参见 Python 正则表达式),每一个子组将作为一个参数,被 views.py 中的对应视图函数接收

我们再访问 http://127.0.0.1:8000/add/4/5/ 就可以看到和刚才同样的效果,但是这回网址更优雅了


源代码下载: 

zqxt_views(django 1.4 - django 1.10).zip [更新于 2016-09-06 00:13:23]

示例代码用Django1.9创建,经过测试,示例代码可以在 Djagno 1.4 - Django 1.10 中正常运行。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
django项目开发实战详解
使用Python Django搭建个人博客系统(完整过程)!
PyCharm 开发Django ,错误汇总
为你的Django视图使用装饰器 |只允许创建模型的用户删除它
第八章 管理支付和订单
前端教程:DjangoURL映射
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服