1.模板中的模型介绍html
模型是数据惟一的、权威的信息源。它包含所储存数据的必要字段和行为。一般,每一个模型对应数据库中惟一的一张表。python
例如:mysql
定义一个Book模型,具备id title pubDate这三个属性。sql
from django.db import models
class Book(models.Model):
id=models.AutoField(primary_key=True)
title=models.CharField(max_length=32)
pubDate=models.DateField()
id title pubDate是模型的三个字段,每一个字符都被指定成一个类属性,每一个属性映射到一个数据库的列。数据库
经过logging能够查看翻译成的sql语句django
2.映射关系以下:oracle
表名 <-------> 类名 字段 <-------> 属性 表记录 <------->类实例对象
3.数据库配置app
在django的项目中会默认使用sqlite数据库,在settings里有以下设置:oop
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
若是想要更改成MySQL数据库,须要修改以下:post
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'books', #你的数据库名称 'USER': 'root', #你的数据库用户名 'PASSWORD': '', #你的数据库密码 'HOST': '', #你的数据库主机,留空默认为localhost 'PORT': '3306', #你的数据库端口 } }
【注意】
__init__
,在里面写入:import pymysql pymysql.install_as_MySQLdb()
4.建立数据库
4.1 在Terminal中执行如下命令
python manage.py makemigrations
这条命令会模板在migrations中生成0001_initial.py这个文件,这个文件中存的就是用来生成表的数据。
4.2.再次执行一个命令生成表
python manage.py migrate
这样就会生成一个叫app01_book的表
若是执行完上边两个命令,数据库中的表依然不存在的话,须要检查,项目中的settings文件中应用是否加入到
ALLED_APPS 这个列表中
5.数据库的操做
5.1查询
def index(request): # 查询全部的书籍 booklist=models.Book.objects.all() # 返回值QuerySet [obj1,obj2....] return render(request,"index.html",{"bookList":booklist}) #将全部书籍渲染到首页中。 #前边的bookList是 index.html中的变量名称,后边这个值就是上面的书籍对象。
index.html中的内容:
{% for book_obj in bookList %} <tr> <td>{{ forloop.counter }}</td> <td>{{ book_obj.title }}</td> <td>{{ book_obj.pubDate|date:"Y-m-d" }}</td> <td>{{ book_obj.price }}</td> <td>{{ book_obj.publish }}</td> <td> <a href="/edit/{{ book_obj.id }}"><button class="btn btn-info">编辑</button></a> <a href="/del/{{ book_obj.id }}"><button class="btn btn-danger">删除</button></a> </td> </tr> {% endfor %}
5.2.增长
def add(request): if request.method=="POST": print(request.POST) title=request.POST.get("title") pubdate=request.POST.get("pubdate") price=request.POST.get("price") publish=request.POST.get("publish") # 插入数据 models.Book.objects.create(title=title,pubDate=pubdate,price=price,publish=publish) return redirect("/index/") return render(request,"add.html")
5.3删除
def delBook(request,id): models.Book.objects.filter(id=id).delete() return redirect("/index/")