代码编写流程:
编写SQL -> 编写视图 -> 视图映射 -> 编写模板 -> 测试提交
一、安装annaconda(Mac中)
二、安装Pycharm Pro(Mac中)
三、安装Mysql(Mac中)
四、用annaconda创建虚拟环境(终端中)
·创建:
conda create -n xxx python=3.6
# python解释器尽量使用3.4~3.6版本
·激活:
conda activate xxx
·退出:
conda deactivate
·删除该环境:
conda remove --name xxx --all
五、进入虚拟环境,安装django(终端中)
pip install django==2.2
# 3.X版本太新,先不用
六、创建django项目(终端中)
django-admin startproject xxx
七、创建用户表app(终端中)
·进入项目目录,创建app
·定义模型类,继承AbstractUser
·settings.py中指明AUTH USER MODEL = '应用名'.‘类名’
注意:此操作要在第一次migrate之前进行
python manage.py startapp xxx
八、创建数据库(终端中)
·进入mysql数据库,执行
create database XXX default charset utf8;
·通常数据库名跟项目名保持一致
·(pycharm中)settings.py里进行数据库的配置,修改DATABASES配置项的内容,由sqlite3变为mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test', # 指定连接的数据库的名称
'USER': 'root', # 指定登录到数据库的用户名
'PASSWORD': 'Xiaowen147', # 数据库的密码
'HOST': '127.0.0.1', # 连接具体数据库的IP
'PORT': '3306', # 连接具体数据库的端口
}
}
注意: python3连接mysql得使用pymysql,MysqlDB模块很久没更新了,但django默认调用的还是MysqlDB,所以pymysql有个功能可以让django以为是用了MySQLdb,即在项目目录下的__init__.py中加上一句代码,不加的话,一会连接数据时会报错:
import pymysql
pymysql.install_as_MySQLdb()
shell操作:
mysql> show databases; # 查看数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> use test; # 进入test数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables; # 查看数据库中的表
+-------------------------------------+
| Tables_in_test |
+-------------------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
| user_list_userinfo |
| user_list_userinfo_groups |
| user_list_userinfo_user_permissions |
+-------------------------------------+
10 rows in set (0.01 sec)
mysql> desc user_list_userinfo; # 查看表中的字段
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | bigint | NO | PRI | NULL | auto_increment |
| last_login | datetime(6) | YES | | NULL | |
| is_superuser | tinyint(1) | NO | | NULL | |
| first_name | varchar(150) | NO | | NULL | |
| last_name | varchar(150) | NO | | NULL | |
| email | varchar(254) | NO | | NULL | |
| date_joined | datetime(6) | NO | | NULL | |
| username | varchar(10) | NO | UNI | NULL | |
| password | varchar(20) | NO | | NULL | |
| tel | varchar(11) | YES | | NULL | |
| create_time | datetime(6) | NO | | NULL | |
| recent_time | datetime(6) | NO | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
12 rows in set (0.01 sec)
九、设置settings.py:语言、时区、安装app、templates、URLS(pycharm中)
十、在app目录下写各自模型类
from django.db import models
class XXX(models.Model):
pass
十一、makemigrations、migrate数据表
python manage.py makemigrations
python manage.py migrate