django基础到高手知识笔记总结,50页笔记,共10大模块
Django框架
主要内容
项目创建运行
配置文件
路由配置 (
View
)request和response对象 (
View
)类视图 (
View
)中间件
数据库 (
Model
)模板(
Template
)admin站点管理
学了这么多python的知识,如果连django都不会的话,那有点说不过去。
想要的小伙伴直接去我的博客拿就行:
django 0基础到高手笔记集合https://zhuanlan.zhihu.com/p/563669859
目录笔记的总目录为:
工程搭建
掌握虚拟环境使用
掌握Django项目和应用的创建
掌握Django项目的运行
掌握Django视图和模板的初步使用
虚拟环境安装
1. 创建虚拟环境
mkvirtualenv django_py3 -p python3
注意: 需要联网
2. 安装Django
pip install django==1.11.11
3. 相关命令
# 虚拟环境 mkvirtualenv # 创建虚拟环境 rmvirtualenv # 删除虚拟环境 workon # 进入虚拟环境、查看所有虚拟环境 deactivate # 退出虚拟环境 # pip pip install # 安装依赖包 pip uninstall # 卸载依赖包 pip list # 查看已安装的依赖包 Django (1.11.11) pip freeze # 查看已安装的依赖包 django==1.11.11
Django项目和应用创建
一、项目组织结构
一个
Project
包含有多个App
一个
App
就是一个
Python
包,就代表一个功能模块,比如:用户模块,商品模块等
各功能模块间可以保持相对的独立
以包的形式组织代码方便功能模块的复用
二、创建项目的两种方式
通过
pycharm
创建通过 命令行创建
1. 通过 pycharm
创建项目
项目创建出来后结构如下:
2. 通过命令创建
创建项目:
django-admin startproject 项目名
创建应用:python manage.py startapp 应用名
创建项目
要创建Django项目, 先进入虚拟环境:
workon 虚拟环境名
使用如下命令创建Django项目:
django-admin startproject 项目名 # 例:要创建的项目名为 Django02 django-admin startproject Django02
创建应用
先进入项目根目录下:
cd 项目根目录
执行以下命令创建应用
# manage.py 为上述创建项目时自动生成的管理文件 python manage.py startapp 应用名 # 例: python manage.py startapp users
请求对象
一、客户端传参的几种方式
通过 URL路径(
path
)传递,例如:http://127.0.0.1:8000/news/1/2
,两个参数:新闻类别id
和页码
通过
query string 查询字符串
传递
例如:
http://127.0.0.1:8000/news?category=1&page=2
关于URL格式:
schema://host[:port][path][?query-string][#anchor]
通过
body 请求体
传递,又可根据传递的数据格式,分为:键值对:
category=1&page=2
表单数据:
非表单数据(json, xml)
{"category": 1, "page": 2} <news> <category>1</category> <page>2</page> </news>
通过
http
协议请求头(header
)传递
二、HttpRequest对象
一、Django请求和响应过程:
二、request对象常用属性:
Attribute | Description |
---|---|
path | 请求页面的全路径,不包括域名端口参数。例如: /users/index |
method | 一个全大写的字符串,表示请求中使用的HTTP方法,常用值:GET , POST ,DELETE ,PUT 等。以下三种为 GET 请求: form 表单默认提交(或者method指定为get)``在浏览器中输入地址直接请求``网页中的超链接(a标签) |
user | 已登录:AbstractUser对象;未登录:AnonymousUser对象; 判断是否已经登录: request.user.is_authenticated() ,返回true表示已经登录 |
GET | 类似字典的 QueryDict 对象,包含 GET 请求的所有参数 |
POST | 类似字典的 QueryDict 对象,包含 POST 请求的所有键值对参数(表单post提交的参数) |
body | 获取原始的请求体数据,获取到的数据为bytes类型 |
META | python 字典类型,封装了请求头headers中的数据 - REMOTE_ADDR – 客户端的IP地址 - REQUEST_METHOD — 一个字符串,例如"GET" 或"POST - CONTENT_TYPE – 请求的正文的MIME 类型 注意:对于用户添加到请求头中的键值,Django会给键加上前缀 HTTP_ 再转换成大写,再把键值保存到request.META中 官方文档参考 |
COOKIES | 一个标准的 python 字典,包含所有的 cookies , 键和值都是字符串 |
session | 可读可写的类似字典的对象: django.contrib.sessions.backends.db.SessionStore 。 Django 提供了 session 模块,默认就会开启用来保存 session 数据 |
类视图
一、类视图
发帖功能
# url配置 urlpatterns = [ url(r'^post$', views.post), # 显示发帖界面 url(r'^do_post$', views.do_post), # 执行发帖操作 ] # 视图 def post(request): """get请求: 显示发帖界面""" return render(request, 'post.html') def do_post(request): """post请求: 执行发帖操作""" title = request.POST.get('title') content = request.POST.get('content') return HttpResponse('发帖:title=%s, content=%s' % (title, content))
通过一个URL和视图同时实现登录功能的
GET
和POST
请求(注意:可能还有PUT
DELETE
等);# url配置 urlpatterns = [ url(r'^post$', views.post), # 发帖功能 ] # 视图 def post(request): """发帖功能""" if request.method == 'GET': # get请求: 显示发帖界面 return render(request, 'post.html') else: # post请求: 执行发帖操作 title = request.POST.get('title') content = request.POST.get('content') return HttpResponse('发帖:title=%s, content=%s' % (title, content))
类视图 实现
以函数的方式定义的视图称为函数视图
在Django中还可以通过类来定义一个视图,称为类视图
类视图 的使用
定义一个类,继承Django提供的
View
类from django.views.generic import View class PostView(View): def get(self, request): """get请求: 显示发帖界面""" return render(request, 'post2.html') def post(self, request): """post请求: 执行发帖操作""" # 代码简略 return HttpResponse('执行发帖操作')
调用类视图的
as_view()
方法配置urlurlpatterns = [ ... # 类视图注册 url(r'^post2$', views.PostView.as_view()), ]
类视图优点:对于函数视图代码可读性和复用性更好
笔记太多了,喜欢的小伙伴直接直接去拿就行: