一、django有关的所有命令
-
django的安装
pip install django==2.2 pip install -i yuan django==2.2
-
创建项目
- django-admin startproject 项目名
- 通过manage.py 执行
-
创建app
- python manage.py startapp app01
-
启动项目
-
python manage.py runserver #127.0.0.1:8000
-
python manage.py runserver 80 #127.0.0.1:80
-
python manage.py runserver 0.0.0.0:80 #0.0.0.0:80
-
数据库相关
- python manage.py makemigrations #记录modeles的变化,将变更记录记录到对应的APP下的migrations
- python manage.py migrate #翻译sql语句,去数据库执行
二、配置settings.py
-
数据库相关
EGNIGE: 引擎 mysql sqllite3
NAME: 数据库名字
HOST: IP
PORT: 端口号 3306
USER: 用户名
PASSWORD: 密码 -
静态文件
STATIC_URL = ’static’ #别名
STATICFILES_DIRS = [
os.path.join(BASE_DIR,’static’),
]
-
APP
INSTALLED_APPS = [
‘app01.apps.App01Config’, #告诉django 自己创建了一个名叫app01的应用
# ‘app01’
] -
CARE
注释csrf中间件, from表单可以提交post请求
'django.middleware.csrf.CsrfViewMiddleware’,
三、ORM的对应关系
类 — 》数据表
对象 -》数据行
属性 —》字段
四、django使用mysql数据库步骤:
1.手动创建mysql数据库
2.在settings中配置
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysite',
'HOST': '47.101.42.0',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '123456',
}
}
3、告诉django使用pymsql连接数据库
在与settings.py文件同级的目录下的__init__.py 文件中引用
import pymysql
pymysql.install_as_MySQLdb()
4、models.py写类(继承models.Mode())
class User(models.Model):
id = models.AutoField(primary_key=True) #id 自增主键
email = models.CharField(max_length=32) #varchar(32)
pwd =models.CharField(max_length=32)
#出版社
class Press(models.Model):
id = models.AutoField(primary_key=True) #id
name = models.CharField(max_length=32) #出版社名称
def __str__(self):
return self.name
#书
class Book(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=40) #书名称
#to 关联的表名
# django 2.0之后指定on_delete
press = models.ForeignKey(to='Press',on_delete=models.CASCADE)
#作者
class Author(models.Model):
id = models.AutoField(primary_key=True) #自增id
name = models.CharField(max_length=32) #作者名称
books = models.ManyToManyField(to='Book') #OM自动关联书籍表id
def __str__(self):
return self.name
5、执行命令:
python manage.py makemigrations
python manage.py migrate
五、ORM操作
1、查:
from app01.models import User, Press, Book, Author
Press.objects.all() #查询所有的出版社对象–》对象列表 queryset
Press.objects.filter(条件) #查询所有满足条件的出版社对象–》对象列表 queryset
Press.objects.get(条件) #查询只能有一个对象,没有或者多个都报错—》对象
属性:
press_obj.id
press_obj.name
外键:
book_obj.id
book_obj.title
book_obj.press ——》 关联的对象
book_obj.press_id ——》 数据库中的关联对象的ID
多对多:
author_obj.books ——》 管理对象
author_obj.books.all() ——》作者关联的所有书籍对象
2、增加:
Press.objects.create(name=‘出版社’)
Book.objects.create(title=’书名’, press_id=press_id)
Book.objects.create(title=book_title, press_id=press_id)
author_obj = Author.objects.create(name=‘作者名’)
author_obj.books.set(book_ids) # 参数是书籍id值的列表
3、删除
book_obj.delete() —— 》 删除单个对象
Press.objects.filter(条件).delete() ——》 删多个对象
Press.objects.filter(id=delete_id).delete()
4、编辑
#2.2 修改出版社名称
edit_press_obj.name = new_name
#2.3 修改后数据同步
edit_press_obj.save()
多对多编辑
#去数据库修改
edit_author_obj.name = new_author_name
edit_author_obj.save()
#修改关系表
edit_author_obj.books.set(new_book_ids)