iT邦幫忙

0

django入門(六) — 簡單範例(4)-資料模型與填充程式

  • 分享至 

  • xImage
  •  

全部文章:
django入門(一) — 介紹與設定開發環境
django入門(二) — 建立資料庫與專案
django入門(三) — 簡單範例(1)-建立app
django入門(四) — 簡單範例(2)-範本與範本繼承
django入門(五) — 簡單範例(3)-靜態檔
django入門(六) — 資料模型與填充程式
django入門(七) — Django ORM操作

建立資料表

stock/models.py

class Stock(models.Model):
    name = models.CharField(max_length=128, unique=True)
    content = models.TextField()
    price = models.FloatField()

    def __str__(self):
        return self.name

資料庫遷移

makemigrations會產生遷移檔用來產生資料表。

右鍵點擊專案 → Django → Custom Command → Command: makemigrations → OK

會看到
Migrations for 'stock':
stock\migrations\0001_initial.py
- Create model Stock

之後接著

右鍵點擊專案 → Django → Migrate

填充程式

這裡我們已經成功建立資料表了
我們可以先寫一個填充程式,來看看我們的資料模型是否正確。

專案目錄建立一個populate的資料夾
下面建立三個py檔分別為__init__.py、base.py、stock.py

populate/base.py

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'demo.settings')
import django
django.setup()

populate/stock.py

from populate import base
from stock.models import Stock


stocks = ['台積電', '聯電']
prices = [672.00, 62.70]
contents = ['台積電是臺灣一家從事晶圓代工的半導體製造廠,總部位於新竹科學園區,主要廠房則分布於新竹市、臺中市、臺南市。','聯華電子股份有限公司,簡稱聯電,英文全名「United Microelectronics Corporation」']

def populate():
    print('start ... ', end='')
    Stock.objects.all().delete()

    for i in range(len(stocks)):
        stock=Stock()
        stock.name=stocks[i]
        stock.content=contents[i]
        stock.price=prices[i]
        stock.save()
    print("success")
if __name__ == '__main__':
    populate()

接著我們進入虛擬環境(忘記怎麼進去可以看django入門(二) — 建立資料庫與專案)
進入虛擬環境後,再到專案目錄。

(stockVenv)C: ..\web\workspace\demo>python -m populate.stock

看到success就代表我們成功填充資料了!

顯示資料

stock/views.py把stock改成下面的code

from django.shortcuts import render
from stock.models import Stock


def stock(request):
    stocks = Stock.objects.all()
    context = {'stock':'stock page',
               'stocks':stocks}
 
    return render(request, 'stock/stock.html', context)

stock/templates/stock/stock.html
將下方code放到block content內

<br>
{% for stock in stocks %}
<div align="left">
  <h3>名稱:{{ stock.name }}</h3>
  <p>當前股價:{{ stock.price }}</p>
  <p>簡介:{{ stock.content }}<p>
  <hr>
</div>
{% endfor %}

重新啟動伺服器,回到瀏覽器即可看到成果。

補充:model欄位資料型態

ForeignKey:一對多關聯
DateField:日期
DateTimeField:日期時間
FloatField:浮點數
IntegerField:整數
TextField:可存大量的文字


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言