-
创建django项目
django-admin startproject 项目名
-
创建django应用
django-admin startapp 应用名
3.做配置 settings.py
# 3.1 注册应用 INSTALLED_APPS = [ ..... 'rest_framework', 'corsheaders', '新建的应用名' ]
3.2.1 安装corsheaders
pip install django-cors-headers
3.2.2 注册
.....
'corsheaders',
]```
# 3.2.3 增加中间件 `corsheaders.middleware.CorsMiddleware`需要在`CommonMiddleware`在他上面
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
]
# 3.2.4 允许所有的源跨域
CORS_ORIGIN_ALLOW_ALL = True`
# 配置数据库
DATABASES = [
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'haoyouduo',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': 'root',
}
]
# 项目本地化
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
# 静态文件位置
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'),
]
# 指定文件上传的位置
MEDIA_ROOT = [
os.path.join(BASE_DIR,'static'),
]
路由 (一级路由/系统路由+二级路由/应用路由)
# 一级路由/系统路由
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('fruit/', include('fruit.urls')),
]
#二级路由/应用路由
from django.urls import path
from . import views
urlpatterns = [
path('login/', view.LoginView.as_view()),
]
浏览器该如何去访问?
`一级路由+二级路由` => `http://127.0.0.1:80000/fruit/login/`
`slashed` 出现类似于这样的关键字 路由中少斜线
5.数据模型
- 模型的字段
`CharField 字符串 varchar()
IntegerField 整型 => int(11)
DateTimeField 时间类型 =>datetime()
DecimalField 财务类型 => decimal()
BooleanField 布尔类型 =>tinyint(1)
SmallIntegerField 小整型 =》 int(6)
ImageField 图片类型 => varchar()
AutoField 自增字段
ForeignKey 外键
ManyToManyField 多对多`
#属性
max_length 最大的长度 一般放在CharField里面
max_digits 和 decimal_places 一般放在 DecimalField里面
unique 唯一索引
auto_now_add 默认当前时间,时间字段第一次添加记录的时间
auto_add 默认当前时间,时间字段每次改变的记录的时间
default 默认值
upload_to 文件上传的地址
on_delete CASCADE级联删除 DO_NOTHING 什么都不做
class Demo(model.Model):
name = models.CharField(max_length=32,unique=True)
class Meta:
db_table = 'demo'
ordering = ["-id","-name"]
abstract = True
db_table : 指定一个表名
ordering : 对指定的字段进行排序,一般使用的是列表
abstract : 抽象,如果为True,它只是一个公共类,让子类继承,不会产生新表。为Flase,就会生成新表
6.视图函数
FBV `基于函数的视图`
`def index(request):
return HttpResponse("")`
CBV `基于类的视图`
from django.view import View
class DemoView(View):
def get(self,request):
return HttpResponse("")
7.序列化 `一般是在数据库或者其他地方将数据读出来经过处理转成json结构返回给前端供其使用。`
8.get
`目的:通过request对象,获取查询参数
过程:
http://xxx.com/index/?name=xxx&age=ccc&name=yyy request.GET:是一个查询字典
request.GET.get(key) # 获取单个key,value request.GET.getlist(key) # 获取单个key,对应的多个value,得到的是list列表。`
9.post,put,delete
`目的:获取request获取表单,及非表单提交的非查询参数数据
常见的请求方式有:POST,PUT,DELETE,PATCH
请求体中的数据, 一类是json, 一类是表单数据
request.POST:获取表单数据(会把body的内容,解析一份, 解析成一个查询字典) request.body:获取json数据
需要将bytes类型转成dict格式,用到decode(),loads()`
Post, put都需要处理请求体, delete可以没有请求体
post, 通过请求头中的content-type字段来区分格式
表单格式: name=zhangsan&age=18 json格式: '{"name":"zhangsan", "age":18}'
10虚拟环境
`# 方法1:win10
pip install virtualenv
pip install virtualenvwrapper-win`
# 方法2:linux pip3 install virtualenvwrapper # python版本管理工具(虚拟环 境管理)
mkdir $HOME/.virtualenvs # 把所有虚拟环境指定到一个目 录文件夹下存放
find / -name virtualenvwrapper.sh # 查找执行脚本路径,添加到
~/.bashrc vim ~/.bashrc # 修改bash配置文件 '''
export WORKON_HOME=$HOME/.virtualenvs # python虚拟环境安装位置
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 # python真实环境
source /usr/local/bin/virtualenvwrapper.sh ''' source ~/.bashrc # 执行virtualenvwrapper安 装脚本
virtualenvwrapper使用命令
`mkvirtualenv test1 # 创建虚拟环境
mkvirtualenv test2env -p python3 lsvirtualenv # 查看虚拟环境
workon test1 # 进入虚拟环境
deactivate # 退出虚拟环境
rmvirtualenv test1 # 删除虚拟环境
pip list # 查看虚拟环境下的安装包`
pip命令集合
pip pip install # 安装依赖包
pip uninstall # 卸载依赖包
pip list # 查看已经安装的依赖包
pip freeze > requirements.txt # 导出依赖包
pip install -r requirements.txt # 从文件安装依赖包