1. 视图的基本使用
1.1 定义视图
在创建的应用目录下有一个views.py文件,在此文件中定义视图函数:
from django.shortcuts import render
# Create your views here.
def index(request):
# 返回模板
return render(request,"book/index.html")
在项目目录下,创建一个专门用来存放模板的文件夹templates
在模板中创建一个 index.html 页面,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>首页</h1>
</body>
</html>
接下来配置 URL
,将视图函数和
url
对应起来,在 应用目录下的
urls.py
中编辑加入如下代码:
from django.conf.urls import url
# 导入应用目录下存放视图函数的views.py文件
from . import views
urlpatterns = [
url(r"^index$",views.index), #建立 url 和 views.index 视图函数的关联
]
在主目录下的urls.py中编辑加入如下代码:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r"^", include("book.urls")), # 包含应用中的urls文件,book是我创建的应用名称
]
最后,启动服务器并通过浏览器访问 http://127.0.0.1:8000/index
,页面显示如下:
2. 获取请求参数
我们是可以在匹配过程中从 url
中捕获参数,并把每个捕获的参数都作为一个普通的
Python
字符串传 递给视图。获取请求参数需要在正则表达式中使用小括号表示,分别有以下两种方式完成:
(1)位置参数;
(2)关键字参数。
2.1 位置参数
可以直接使用小括号,并通过位置参数传递给视图
from django.http import HttpResponse
# show视图函数
def show(request, id):
return HttpResponse("show 参数值:%s" % id)
# 添加显示show视图函数的路由
url(r"^show(\d+)$",views.show),
输入地址‘http://127.0.0.1:8000/show99’,如图:
2.2 关键字参数
可以在正则表达式部分为组命名,这就是关键字参数,需要使用到的正则表达式为组命名:
(?P<name>)
|
分组起别名。
|
from django.http import HttpResponse
def show(request, bid):
return HttpResponse("显示关键字参数值:%s" % bid)
# ?P 部分表示为这个参数定义的名称为 bid[注:后边使用时,必须写相同的名称], 也可以是其它名称
url(r"^show(?P<bid>\d+)$",views.show)
输入地址‘http://127.0.0.1:8000/show67’,如图:
3. 错误视图
Django 框架还自带了几个默认视图并用于处理
HTTP
错误请求,例如
404
视图、
500
视图。可以到下载的django模块中查看:
若想看到自己定义的错误视图而不是调试信息,需要修改 setting.py
文件的如下配置:
再将定义的模板放在模板文件夹下:
4. HttpRequest对象
服务器接收到 HTTP
请求后,会根据报文来创建一个
HttpRequest
对象,这个对象就是视图函数的第一个参数(一般定义命名为request)。在 django.http
模块中,定义了
HttpRequest
对象的
API
。
path
|
返回一个字符串
str
类型的值,表示请求的页面的完整路径,不包含域名。
|
method
|
返回一个字符串
str
类型的值,表示请求使用的
HTTP
方式,常用值包括:
'GET'
、
'POST'
。
|
encoding
|
返回一个字符串
str
类型的值,表示提交的数据的编码方式。若为
None
,则表示使用浏览器的
默认设置,一般为
utf-8
。
|
GET
|
一个类似于字典的对象,包含
get
请求方式的所有参数。
|
POST
|
一个类似于字典的对象,包含
post
请求方式的所有参数。
|
FILES
|
一个类似于字典的对象,包含所有的上传文件。
|
COOKIES
|
一个标准的
Python
字典,包含所有的
cookie
、键和值都为字符串。
|
session
|
一个既可读又可写的类似于字典的对象,表示当前的会话,只有当
Django
启用会话的支持时
才可用。
|
编写一个 test()视图函数:
def test(request):
# 查看属性
print("path 属性值:", request.path)
print("method 请求方式:", request.method)
print("encoding 编码格式:", request.encoding)
print("get 请求方式:", request.GET)
print("post 请求方式:", request.POST)
return HttpResponse("测试 test")
注册路由:
url(r"^test$",views.test)
5. JsonResponse 子类
类 JsonResponse
继承自
HttpResponse
对象,被定义在
django.http
模块中,创建对象时接收字典作为参数。通常地,JsonResponse
对象的
content-type
为
'application/json'
。
from django.http import JsonResponse
def get_json(request):
return JsonResponse({"name1": "阿里巴巴", "name2": "腾讯", "name3": "京东商城"})