python--django模板(model)

 

 

 

1.模板中的模型介紹html

    模型是數據惟一的、權威的信息源。它包含所儲存數據的必要字段和行爲。一般,每一個模型對應數據庫中惟一的一張表。python

  • 每一個模型都是django.db.models.Model 的一個Python 子類。
  • 模型的每一個屬性都表示爲數據庫中的一個字段。
  • Django 提供一套自動生成的用於數據庫訪問的API

例如: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,mysql, oracle,postgresql數據庫
  • django默認使用sqlite的數據庫,默認自帶sqlite的數據庫驅動 , 引擎名稱:django.db.backends.sqlite3
  • 引擎名稱:django.db.backends.mysql

setting

在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', #你的數據庫端口
    }
}

【注意】

  • NAME即數據庫的名字,在mysql鏈接前該數據庫必須已經建立,而上面的sqlite數據庫下的db.sqlite3則是項目自動建立
  • USER和PASSWORD分別是數據庫的用戶名和密碼。
  • 設置完後,再啓動咱們的Django項目前,咱們須要激活咱們的mysql。
  • 而後,啓動項目,會報錯:no module named MySQLdb
  • 這是由於django默認你導入的驅動是MySQLdb,但是MySQLdb對於py3有很大問題,因此咱們須要的驅動是PyMySQL
  • 因此,咱們只須要找到項目名文件下的__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/")
相關文章
相關標籤/搜索