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/")