Django视图与网址进阶
来源:互联网 发布:aoc显示器软件 编辑:程序博客网 时间:2024/06/07 12:41
一 、在网页上做加减法
1. 采用 /add/?a=4&b=5 这样GET方法进行
django-admin.py startproject zqxt_views
cd
zqxt_views
python 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
render
from
django.http
import
HttpResponse
def
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, url
from
django.contrib
import
admin
admin.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
url
from
django.contrib
import
admin
from
calc
import
views as calc_views
urlpatterns
=
[
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/ 就可以看到和刚才同样的效果,但是这回网址更优雅了
- Django视图与网址进阶
- Django 视图与网址进阶:
- Django学习(四)(视图与网址进阶)
- Django-视图与网址
- Django视图与网址
- Django 视图与网址
- Django 基础教程 视图与网址
- Django 基础教程 视图与网址
- Django 之 (2)视图与网址
- Django学习(三)(视图与网址)
- Django视图和网址
- Django获取视图网址
- django视图层进阶
- Django03-视图与网址
- Django学习____视图和网址
- Django入门-3:视图和网址
- Django: 路由与视图
- Django学习笔记(11):视图进阶(上)
- Java中System.out.println("Hello, World");深入剖析
- 【比特币】通过dns seeds获取节点列表数据
- SpringCache实现原理及核心业务逻辑(三)
- AES128-ecb加解密
- 树莓派搭建samba
- Django视图与网址进阶
- 泛型
- maven插件不执行-build-helper-maven-plugin pom中不执行
- What version of Python do I have?
- sql命令语句基本使用(2)
- 推荐|如何利用碎片化时间学习?
- stm32_014_stm32启动模式的配置
- Java中的类实现Serializable接口
- Python 3.6 版本 Pytesseract 图像验证码识别 PyCharm 报错FileNotFoundError