Django基础

  1. 创建django项目

    django-admin startproject 项目名

  2. 创建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 # 从文件安装依赖包
原文地址:https://www.cnblogs.com/wangxiaosai/p/13882073.html