Django项目构建
Django项目构建
概述
Django采用MVC架构设计的开源的WEB快速开发框架。
优点:
- MVC设计模式
- 大而全的重架构,自带ORM、Template、Form、Auth核心组件,便于快速开发
- 简介的url设计
- 实用的管理后台Admin
- 周边第三方插件丰富(drf)
缺点:框架重、同步阻塞
Django的设计目标就是一款大而全,便于企业快速开发项目的框架,因此企业广泛采用。
项目构建
启动pycharm 点击 create new project.
选择建立新的虚拟环境(每个项目独立开发,所以需要独立的虚拟环境),选择基于开发的解释器版本。
本次开发依然采用Pycharm社区版,看似缺少了一些功能,但实际开发够用了。
安装Django
Django的安装参考 https://www.djangoproject.com/download/
Python版本依赖,参考 https://docs.djangoproject.com/en/3.2/faq/install/#what-python-version-can-i-use-with-django
长期支持版本是企业的选择,由于最新版是3.2是LTS,本次采用它。
Django3.x兼容2.x版本。相比于2.x版本
- 支持MariaDB 10.1+
- 开始支持ASGI,官方建议,但目前可以研究,暂时不要切换
- 对内建模块django.contrib.admin、django.contrib.auth一些改动
- Model中一些增强
$ pip install django
Installing collected packages: sqlparse, pytz, asgiref, django
Successfully installed asgiref-3.4.1 django-3.2.6 pytz-2021.1 sqlparse-0.4.1
脚手架构建
Django安装完,提供了一个命令 django-admin
,它实际是虚拟环境路径中,Lib/site-packages/django/bin
下的django-admin.py
django-admin
Type 'django-admin help <subcommand>' for help on a specific subcommand.
Available subcommands:
[django]
makemigrations
migrate
runserver
startapp
startproject
$ django-admin help startproject
上面这些都是最常用的命令,这里只需要使用 startproject 来构建一个Django项目目录结构和基础文件。
$ django-admin startproject salary .
构建一个项目叫做blog,注意最后有个点,表示在当前目录即项目根目录创建。
项目根目录
├─ manage.py
└─ salary
├─ settings.py
├─ urls.py
├─ wsgi.py
└─ __init__.py
重要文件说明
- manage.py:本项目管理的命令行工具。应用创建、数据库迁移等都使用它完成
- salary/settings.py:本项目的全局核心配置文件
- 应用、数据库配置
- 模板、静态文件
- 中间件、日志
- 第三方插件配置
- blog/urls.py:URL路径映射配置。项目初始,只配置了/admin的路由。
- blog/wsgi:定义WSGI接口信息。部署用,一般无需改动。
MySQL数据库驱动
Django支持Mysql5.5
Django官方推荐使用本地驱动mysqlclient 1.3.7+ 也可以使用pymysql
$ pip install mysqlclient
或者
pip install pymysql (需要在__init__ 中添加)
import pymysql
pymysql.install_as_MySQLdb()
创建应用
创建应用employee
python manage.py startapp employee
创建应用后,项目根目录下产生一个employee目录,有如下文件:
- admin.py:应用后台管理声明文件
- models.py:模型层Model类定义
- views.py:定义URL响应函数或类
- migrations包:数据迁移文件生成目录
- apps.py:应用的信息定义文件
配置
salary/settings.py是全局配置文件
注册应用
注册应用,可以做迁移migrate、做后台管理Admin
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'employee', ]
数据库配置
用数据库,需要修改默认的数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'wayne',
'PASSWORD': 'wayne',
'HOST': '192.168.142.140',
'PORT': '3306',
}
}
配置项 | 说明 |
---|---|
HOST | 数据库主机。缺省值是空字符串代表localhost,如果是’/‘开头表示使用unix socket连接 |
POST | 端口 |
USER | 用户名 |
PASSWORD | 密码 |
NAME | 库名 |
OPTIONS | 选项,字典类型,参考MYSQL文档 |
数据库引擎ENGINE
内建的引擎有
- django.db.backends.postgresql’
- ‘django.db.backends.mysql’
- ‘django.db.backends.sqlite3’
- ‘django.db.backends.oracle’
本地化和时区
LANGUAGE_CODE = 'zh-Hans' #'en-us' 中文简体
USE_TZ = True
TIME_ZONE = 'Asia/Shanghai' #'UTC'
日志
Django 的日志配置在settings.py中
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'class': 'logging.StreamHandler', #日志输出到控制台,也可以输出到文件具体看官方文档
#'class': 'logging.FileHandler', #输出到日志文件
#'filename': '/path/to/django/debug.log', #指定输出文件的路径
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
#'handlers': ['file'], 输出到文件
'level': 'DEBUG',
},
},
}
配置后,就可以在控制台看到执行的SQL语句。
注意,settings.py中必须DEBUG=True,同时loggers的level是DEBUG,否则从控制台看不到SQL语句。
Django内建loggers可以参考https://docs.djangoproject.com/en/3.2/topics/logging/#django-db-backends
迁移
迁移:指的是把Django中定义的Model类和属性,转换成数据库中表和字段的过程。
迁移一般需要两个过程:
- 制作迁移文件
- 迁移
Django内部也有应用,它们也需要表。这些表的迁移文件已经生成了,只需要迁移。
python manage.py migrate
迁移后,数据库中产生下面这些表:auth_group, auth_group_permissions, auth_permission, auth_user, auth_user_groups, auth_user_user_permissions, django_admin_log,django_content_type, django_migrations, django_session。 如下图
运行
python manage.py runserver
这就是一个Django项目构建基本流程,之后项目构建方式、配置都大同小异。