Django框架搭建
- pip install django==2.2 下载django框架
- 新建django 项目
- django 项目下文件夹与项目同名的为主文件,其他为app文件
- 主文件下settings.py为配置django框架的文件,可配置语言、时区、添加app功能等
- 除创建Django项目时可创建app外,在命令行内输入django-admin startapp 加APP名也可以创建APP
- 在file-settings-live templates 可添加代码块快捷短语
- 在pycharm右上角可设置,ctrl+shift+f10快捷启动django框架,链接端口80为浏览器端口
web运行原理
- 网页由协议、主服务器、url、构成
- 网页通过主服务器、url 找到数据库中相关内容
- 通过相同的协议进行格式上的统一
- 数据库在通过相同协议返回给网页对应服务器和URL的内容
路由文件地址拼接及添加命名空间
- 总路由url.py中定义路由映射urlpatterns下添加app路径和处理器及命名空间
- 进入各app的url.py文件中写入urlpatterns关联拼接路径
- 在各app的view文件中写入处理器
添加命名空间的两种形式
- 在路由映射urlpatterns 下添加命名空间namespace
urlpatterns = [
path('admin/', admin.site.urls),
path('user', include(('user.urls','user'),namespace='user')),
path('goods',include(('goods.urls','goods'),namespace='goods')),
]
- 也可以直接更改app下子路由文件url.py内直接添加命名
urlpatterns = [
path('',views.index_handler,name='user_index'),
]
- 正则参数传递与接收
- 基础正则表达式
- 用户主页案例
基础正则表达式
表达式 | 说明 |
---|---|
. | 除了\n和\r的所有字符 |
\d | 数字 |
\D | 非数字 |
\w | 数字字母和下划线 |
\W | 非数字字母和下划线 |
\s | 空格(包括制表符、换页符) |
------------------------------- | ------------------------------------- |
* | 出现次数>=0 |
+ | 出现次数>=1 |
{n} | 出现次数=n |
{n,m} | m>=出现次数>=n |
^ | 以开头 |
$ | 以结尾 |
- 添加正则表达式路由映射
urlpatterns = [
path('',views.index_handler,name='index'),
#re_path('(\d+)',views.re_handler,name='re'),
re_path('^(\w+.*\d+)$',views.user_handler),
]
- 建立处理器
def user_handler(request,username):
return HttpResponse('你好:%s'%username)
反向解析处理器
- 通过导入reverse,建立reverse处理器反向解析打印路由映射地址
def reverse_handler(request):
print(reverse('user:index'))
print(reverse('user:re',args=('1234',)))
return HttpResponse('reverse')
- 在url中建立reverse的路由映射
urlpatterns = [
path('',views.index_handler,name='index'),
re_path('(\d+)',views.re_handler,name='re'),
re_path('^(\w+.*\d+)$',views.user_handler),
path('reverse',views.reverse_handler)
]
request对象和Response对象
- 客户端向服务器发送request请求,服务器接收请求后向客户端发送返回对象Response
Request对象
Django中的Rquest对象:HttpRequest
关键之 | 说明 |
---|---|
method | 返回请求的方式(GET/POST) |
path | 返回页面的路径(不包括域名) |
MATA | 封装请求头的数据,(字典类型,key大写,下划线连接)REMOTE_ADDR,客户端的IP地址,CONTENT_TYPE ,请求正文的MIME类型,-text/html HTML,-text/piain 普通文本,-application/json Json |
GET | 封装GET请求数据的QueryDict对象 |
POST | 封装POST请求数据的QueryDict对象 |
FILES | 封装上传文件数据 |
COOKIES | 封装请求的cookies,类似字典的对象 |
session | 可以读写的类似字典的对象 |
HttpResponse对象
HttpResponse(
content=‘响应体’
content_type=‘MIME类型’
status=‘状态码’
)
常见的状态码
状态码 | 解释 |
---|---|
200 | 请求成功 |
400 | 客户端请求语法错误 |
403 | 服务器拒绝请求 |
404 | 没有找到对应的页面 |
500 | 服务器内部错误 |
JsonResponse对象
from django.http improt JsonResponse
def json_handler(request):
return JsonResponse(
{‘edu’:‘csdn学院’},
{‘course’:‘Python’},
json_dumps_params={‘ensure_ascii’:‘False’}
)
注释:若jsonresponse中出现中文,需加json_dumps_params={‘ensure_ascii’:‘False’}保证中文的正确显示
重定向
from django.shortcuts import redirect
def redirect_handler(request):
#重定向到用户首页
return redirect(’/user’)
#通过reverse配合重定向
from django.shortcuts import reverse
def redirect_handler(request):
#重定向到用户首页
return redirect(reverse('user:index))