django完整的项目开发配置

开始本篇教程之前你需要了解的内容

1 基础知识: python的基础知识,django基础命令,git基础 mysql
2 开发工具:pycahrm ,python3.6 ,django2.2以上 ,mysql(非必须,navicate(非必须)

创建项目和APP

1 打开pycharm 创建一个django项目

//在终端创建一个名为student的app
 python manager.py  startapp student

此时的项目目录为

修改项目配置

settings.py介绍:这是我们django项目的配置文件,基本上我们项目的所有配置都需要在这个文件下完成 1 修改时区的设置:默认时间设置不是中国时间,这样你在网数据库存时间的时候会发现,数据全是英文时间也对不上

# 把settings上面的默认字段修改为
LANGUAGE_CODE = 'zh-hans'   #语言中文
TIME_ZONE = 'Asia/Shanghai'   # 上海时间 (别问我为啥是上海,不是北京问就是没有)
USE_TZ = False    #把本地时间禁止,不要考虑本地时间的存在

2 数据库的设置 1 如果你的项目是小项目那完全没必要修改了sqlite完全够用了 2 企业或者有性能要求的: 修改数据库的默认配置

//打开终端下载pymysql (当然他的也行这里以pymysql 举例了)
pip install pymysql

修改之前有两个坑(在你python manager 和 python manager migrate 会出现) 第一个问题: raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.version)    django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3. 结局方案 1.python安装目录打开base.py,注释掉以下内容:         if version < (1, 3, 13):  raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.version)

2.query = query.decode(errors='replace')   把报错decode修改为encode 提前创建好数据库 建议安装mysql的时候顺便安装一下navicate ,可视化操作方便多了你要是喜欢敲命令当我没说 如何安装mysql我这里就不讲了,自行goole或者百度 引入pymysql 在settings.py中添加以下代码

#要引入pymysql必须引入加入这两句代码
import pymysql
pymysql.install_as_MySQLdb()
#修改配置文件 
DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    # }
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 数据库引擎
        'NAME': '你创建的数据库的名称',  # 数据库名,先前创建的
        'USER': '你mysql的用户名',  # 用户名,可以自己创建用户
        'PASSWORD': '你mysql的密码',  # 密码
        'HOST': 'localhost',  # mysql服务所在的主机ip这里默认为本地127.0.0.1
        'PORT': '3306',  # mysql服务端口
				#测试的数据库,如果不写测试用例的话可以去掉
        'TEST': {
				#这里的数据库不用提前创建。测试的时候会自动创建和销毁的
            'NAME':'随便起一个名字'
        }
    }
}

引入APP

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
		#这里直接引入你创建的名字,有两种写法都行
		#直接引入你创建的app的名字
		# 'student'  
		#引入你你创建的app目录下的apps.py的自动创建的app类名 (这种写法更灵活,可以给app起别名等)
    'student.apps.StudentConfig',
]

资源文件这里简单的配置下以作参考你完全可以自定路径,部署的时候再考虑这个问题更好

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'static')

如何区分生产环境和测试环境 以上这样基本的框架配置完成后,你可以试着运行没有一点问题,实际上我们在开发过程中,经常会碰到这样的问题,开发环境和测试环境有很多配置是不一样,我们当然也可以继续在settings.py自己修改,但是你会想,有没有更好的解决方案能不能搞两套设置文件,一套测试环境使用,一套生产环境使用 自己观察下manager.py这个文件会发现这句代码

#导入django的配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'studentManager.settings')

我们把settings.py删除 记着保存一份新建一个python package,命名为settings 新建3个python文件如下图

把原先settings.py里面的配置全部复制到base.py 在develop.py 和 product.py 分入加入这句代码

#引入base.py的所有配置
from .base import * 

如果你想修改某个配置的直接重写就行了 如product.py

#关闭测试环境
DEBUG = False
ALLOWED_HOSTS = ['*']

修改manage.py 和wsgi.py的配置设置
把这句代码

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'studentManager.settings')

替换为

#正式环境(生产环境)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'studentManager.settings.product') 
# 测试环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'studentManager.settings.develop')

这样就把我们的测试环境和生产环境的配置完全区分开了

最后上传github
1.修改下配置,在settiings包下,新建base_example.py 把里面你的key 和mysql,等其他重要的配置替换 (如何在develop.py 和product.py有重要配置记着同样替换掉) 2. 创建requirements.txt文件

#在项目目录下生成项目的依赖文件
pip freeze > ./requirements.txt

别人使用时

#安装依赖
pip install -r requirements.txt

3 创建.gitignore文件

mkdir  .gitignore

在.gitignore文件里写入下面的忽略内容(在develop.py 和product.py有重要配置记着同样忽略掉):

.gitignore
venv
.idea
db.sqlite3
studentManager/__pycache__/
settings/base.py

评论