一.基本命令:
注:我的是有两个python版本,将python3.6版本的命令设置为 python3 ...,这个根据自己的来就行
- django-admin startproject projectname:生成名为 projectname 的项目 (之后需 cd projectname 执行后面命令)
- pytno3 manage.py startapp app_name:新建名为 app_name 的app(一般一个项目有多个app, 通用的app可以在多个项目中使用)
- python3 manage.py makemigrations:创建数据库表 或 更改数据库表或字段
- python3 manage.py migrate:将上一个命令生成的py文件作用到数据库(注意和3的区别,3是生成但未作用的数据库,4才是作用到数据库)
- python3 manage.py runserver:开发服务器(可以在runserver后指定运行端口,如python3 manage.py runserver 9999 则表示在9999端口运行开发服务器)
- python3 manage.py dbshell:数据库命令行
- python3 manage.py createsuperuser:创建管理员(按提示输入用户名、邮箱、密码,之后启动服务器后,用127.0.0.1:端口号/admin登录)
- 管理界面本地化:Django管理中文界面:在settings.py中将LANGUAGE_CODE 值改为 zh-hans;时区本地化:在settings.py中将TIME_ZONE的值改为Asia/Shanghai
二.踩过的坑:
注:踩过的坑 解决eg 都是以我的为例子,如有不同需根据自己的代码做改动解决
- Django在根据models生成数据库表时报 (使用命令:python3 manage.py makemigrations时)TypeError:__init__() missing 1 required positional argument: 'on_delete'
原因:在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:TypeError: __init__() missing 1 required positional argument: 'on_delete'
解决:在外键值的后面加上 on_delete=models.CASCADE
eg:hbook = models.ForeignKey('BookInfo',on_delete=models.CASCADE)
- 在进入admin的时候出现’set’ object is not reversible错误
版本:python3 and django2.1
解决:将urls.py 中{ } 改为[]
- python3.6+MySQL,django项目报错:ModuleNotFoundError: No module named 'MySQLdb'
版本:python3.6 and mysql and django2.1
解决: 在项目文件夹下的_init_.py中导入pymysql包
import pymysql
pymysql.install_as_MySQLdb()
最后:刚开始学,有错的地方希望大家指正