Django基础知识整理
一.基础路由与命名空间
基础路由:在子app中添加urls.py文件,
path中分别对应:子app中的路径,子app对应的视图函数,子app对应的别名
命名空间:在主路由的urls.py文件中添加
namespace='名称'
注意:在include中,前面一定要加上括号并写上对应app的命名,不然会报错
二.正则路由映射参数的传递与接收
1.导入:from django.urls import re_path
2.re_path的使用:在子的urls.py中使用正则表达式
re_path('(\d+)',views.re_hander,name='re'),
3.在视图层中定义views.re_hander视图
def re_hander(request,num):
return HttpResponse(num)
4.正则表达式的基本使用
表达式 | 说明 |
. | 出\n和\r的所有字符 |
\d | 数字 |
\D | 非数字 |
\w | 数字字母和下划线 |
\W | 非数字字母和下划线 |
\s | 空格(包括字表符和换页符) |
* | 出现的次数>=0 |
+ | 出现的次数 |
{n} | 出现n次 |
{n,m} | m>=出现次数>=n |
^ | 以开头 |
$ | 以结尾 |
三.反向解析处理器
原理:从处理器反向解析得到它的url地址
实例:
from django.shortcuts import render,HttpResponse
from django.shortcuts import reverse
# Create your views here.
def index_hander(request):
return HttpResponse('user index')
def re_hander(request,num):
return HttpResponse(num)
def user_hander(request,username):
return HttpResponse('你好:'+username)
def reverse_hander(request):
print(reverse('user:index'))
print(reverse('user:re',args=(1234,)))
return HttpResponse('reverse')
输出结果:
这里返回的就是反向解析的url地址
四.Request对象与Response对象
1.Request对象:封装客户端发送请求的对象
主要属性:
关键字 | 说明 |
method | 返回请求的方式(Get/Post) |
path | 返回页面的路径(不包括域名) |
META | 封装请求头的数据 (字典类型,key大写,下划线连接)
REMOTE_ADDR 客户端的IP地址
CONTENT_TYPE 请求正文的MIME类型
- text/html HTML
- text/plain 普通文本
- application/json Json
|
GET |
封装GET请求数据的QueryDict对象
|
POST |
封装POST请求数据的QueryDict对象
|
FILES
| 封装上传的文件 |
COOKIES
|
封装请求的cookies,类似字典的对象
|
session
|
可以读写的类似字典的对象
|
2.Response对象:服务端响应客户端的对象
return HttpResponse( content='响应体', content_type='MIME类型', status=状态码 )
3.JsonResponse对象
它与Python的主要区别是:
在Python中,如果为空值则用None表示,Json则用Null表示,
在Python中,布尔值True和False,Json中,布尔值true,false
def json_handler(request):return JsonResponse({"edu":"CSDN","course":"Python"},)
注意:1.JsonResponse只接收字典
2.当字典中出现中文,需要加入json_dumps_params={"ensure_ascii":False}