当我们开始一个新的应用的时候
django-admin.py startapp app01
接下来的两个步骤如果已经设置好了mysql就可以忽略直接进入正题
1.在 settings.py 中找到 INSTALLED_APPS 这一项,添加上自己应用的名字
INSTALLED_APPS = (
'app01', # 添加此项
)
2.# 在与 settings.py 同级目录下的 init.py 中引入模块和进行配置
import pymysql
pymysql.version_info = (1, 4, 0, "final", 0)
pymysql.install_as_MySQLdb()
创建模型
在生成的app01的文件内找到models.py这个文件添加自己的表
class Book(models.Model):
id = models.AutoField(primary_key=True) # id 会自动创建,可以手动写入
title = models.CharField(max_length=32) # 书籍名称
price = models.DecimalField(max_digits=5, decimal_places=2) # 书籍价格
publish = models.CharField(max_length=32) # 出版社名称
pub_date = models.DateField() # 出版时间
在终端运行
$ python3 manage.py migrate # 创建表结构
$ python3 manage.py makemigrations app01 # 让 Django 知道我们在我们的模型有一些变更
$ python3 manage.py migrate app01 # 创建表结构
个人踩坑
当时数据库在设置的时候选择错误,但是已经在终端运行了创建表结构的语句,出现了django.db.utils.InternalError: (1051, “Unknown table‘xxx’’”)的错误
这里可以完美解决
数据库操作
规则交互
在app01/views.py: 文件代码:
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('add_book/', views.add_book),
]
添加方法
app01/views.py: 文件代码:
class Book(models.Model):
from app01 import models
# Create your views here.
def add_book(request):
books = models.Book.objects.create(title="如来神掌",price=200,publish="功夫出版社",pub_date="2010-10-10")
print(books, type(books)) # Book object (18)
return HttpResponse("<p>数据添加成功!</p>")
个人踩坑
如果是新打开的应用,会提示Class "xxx" has no 'objects' member的报错提醒
数据库对表的变更操作
最简单的是使用mysqlbench进行操作了,但是要记得进行同步,
我对我的一张表进行操作
python3 manage.py makemigrations cookie
进行变更
1是对这个进行变更
python3 manage.py migrate