项目 配置文件处理
配置相关
- 在python3.6之后,处理文件的路径模块由原来的os 变成 pathlib,这两者之间互相不会收到影响。
settings配置文文件
from pathlib import Path
import os
import sys
# 项目根路径
# 我们就是要让小路飞路径作为项目根路径
BASE_DIR = Path(__file__).resolve().parent.parent  # 项目根路径, 小路飞luffy_api路径 D:\pythonProject03\luffy_api\luffy_api
# print(BASE_DIR)
# 把 apps 路径加入到环境变量
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
# 把BASE_DIR也加入到环境变量,以后直接从小路飞开始导起即可
sys.path.insert(0, str(BASE_DIR))
# print(sys.path)
# 以后从大路飞开始导起,或者小路飞开始导起,或者apps开始导起都可以
# 秘钥,涉及到加密的django中,都会用它
SECRET_KEY = 'django-insecure-!g(8l%fw_#t$pz$x4jdf#e3$b4+c%xzqyq@3zki08vj&i)z4k-'
# 项目是以debug模式运行,还是非debug模式运行
# 项目上线,要改成false
# debug=True 代码可以热更新
# 调试模式下,对开发者更友好:可以列出所有路径.报了错,前端能看到
DEBUG = False
# 它搭配debug=False,它的意思是,允许我的项目部署在哪个ip地址上,* 表示允许部署在所有地址上
ALLOWED_HOSTS = ['*']
# django 是多个app组成的,里面配置app,默认带的app,django内置的app
# django 是一个大而全的框架,有很多内置app:
#   admin后台管理,
#   auth权限管理,
#   contenttypes表中存app也表的关系,
#   sessions session表,django的session相关
#   messages:消息框架,flask讲闪现,是一样的东西
#  staticfiles:静态资源的
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    # 'luffy_api.apps.home',   # luffy_api在环境变量,直接从这一层开始导起, 太长了,以后就想 注册  home
    # 'luffy_api.apps.user'
    'home',
    'user'
]
# 中间件
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',  # 安全相关中间件
    'django.contrib.sessions.middleware.SessionMiddleware', # session相关中间件
    'django.middleware.common.CommonMiddleware',            # 带不带 / 问题
    'django.middleware.csrf.CsrfViewMiddleware',            # csrf 认证,生成csrf串
    'django.contrib.auth.middleware.AuthenticationMiddleware', # 用户认证
    'django.contrib.messages.middleware.MessageMiddleware',  #消息框架相关
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
# 根路由
ROOT_URLCONF = 'luffy_api.urls'
# 模板文件
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],  # 坑,模板路径用列表,可以有多个
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
# 项目运行的配置---》项目上线运行,使用uwsgi 运行   application()
WSGI_APPLICATION = 'luffy_api.wsgi.application'
# 用户名密码写死在代码中了,保证安全
# source 之后可以可以重新配置
name = os.environ.get('LUFFY_NAME', 'luffy')
password = os.environ.get('LUFFY_PASSWORD', 'Luffy123?')
# 拓展:有的公司,直接有个配置中心---》服务--》只用来存放配置文件
# 数据库配置,mysql 主从搭建完,读写分离
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'luffy',
        'USER': name,
        'PASSWORD': password,
        'HOST': '127.0.0.1',
        'PORT': 3306
    },
}
#忽略掉
AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]
# 国际化
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
# 静态资源
STATIC_URL = '/static/'
# 
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
扩展小知识:
面试问题:md5是对称加密还是非对称加密
	-对称家吗:加密的秘钥和解密的秘钥是同一个
    -非对称加密:加密使用公钥加密,解密使用私钥解密,使用公钥是不能解密的
    
    md5是摘要算法:没有解密一说
    
    
# 运行django,运行在0.0.0.0上,局域网内,就能让所有的用户访问
	
# 关于期终架构
	前端: 如果出现看一些开源前端项目看不明白有几种情况
    - 1.vue +java :我们只要分析有哪些接口,使用drf复写出来即可
    -2.新建前端项目,我们只要看到哪个页面好看,直接copy到自己的template和style 中
    -3.js的代码自己写
    
# Python位运算符相关:
	https://zhuanlan.zhihu.com/p/370167569
Luffy连接数据库
项目使用mysql 连接路飞数据库
	-pymysql
    -mysqlDB
    -MySQLclient
mysql的了解:
	原来python2上有个操作mysql的模块叫做mysqlDB,但是到了python3上,就没有支持python3,而django默认使用这个模块去链接mysql,于是就出现了一个问题,用python3去写django,但他这个模块就不行,于是就要默认使用--mysqlDB链接链接mysql,-但mysqlDB不支持python3 ,一运行会报错
    -于是我们使用pymysql作为连接mysql的数据模块,但是我们需要写点代码:
        import pymysql 
        pymysql.install_as_mysqldb()  # 猴子补丁(替换)  
    -但是到了django2.2.2 以后,还使用pymysql,就需要改django的原代码
    
    所以后期我们统一使用mysqlClient 来作为mysql的底层库(orm)
    mysqlClient:它是基于python2的mysqldb ,又在python3上重写了,名字改成了mysqlClient
    -使用mysqlclient这个模块,只需要安装这个模块,不需要写任何的代码,直接使用即可
    pip install mysqlclient
    -但是在安装这个模块的时候,可能会遇到一些问题,不好安装,以后我们会在centos上部署项目,到时候再交怎么安装。
连接数据库
- 
下载模块 pip install mysqlclient
在配置文件中,修改,连接mysql  使用自己创建的用户名
用户名和密码为了以后的按全着想,将用户名和密码加入path环境中
	name=os.environ.get('LUFFY_NAME','Luffy')
    password=os.environ.get('LUFFY_PASSWORD','123')
PS:有的公司,会直接有个配置中心,只会用来存放配置文件
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'luffy',
        'USER': name,
        'PASSWORD': password,
        'HOST': '127.0.0.1',
        'PORT': 3306
    }
}
数据库修改密码:
	set password =password('新密码')

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号