Django database

日期:2020 / 04 / 12

講者:Arashi

Outline

  • DB Browser for SQLite
  • CRUD
  • Use data to web
  1. 圖形化介面
  2. 可直覺性的操作
  3. Windows 與 Mac 皆可使用
  4. 免費,免費,免費!

1. 到官網下載DB Browser for SQLite

2. 下載並安裝完後,執行DB Browser for SQLite

 

使用步驟

3. 點選打開資料庫,在第一層 mysite 資料夾內找到 db.sqlite3

Database Structure

Text

Browse data

CRUD

Create

Read

Update

Delete

(新增)

(讀取)

(修改)

(刪除)

CRUD

進入虛擬環境

$ cd 到上次建立的資料夾
$ venv\Scripts\activate
$ cd 到上次建立的資料夾
$ source venv/bin/activate

for windows

for mac

Install - ipython

$ pip install ipython
  • 在套件、模組或函數名稱後加上 ? 可查看與之相關的資訊。
     
  • history 指令可查看所有輸入過的指令。
     
  • 可以使用 shell 指令,如:ls、cd。

Django Shell

$ python manage.py shell
  • 會預先為我們設定 Django 需要的環境
     
  • 可以直接操作資料庫

Create data

>>> from blog.models import Post

>>> Post.objects.create(title='My First Trip', text='肚子好餓,吃什麼好呢?', author_id=1)

>>> Post.objects.create(title='My Second Trip', text='去散散步吧?', author_id=1)

>>> Post.objects.create(title='Django 大冒險', text='從靜態到動態?', author_id=1)
Post.objects.create(title='My First Trip', text='肚子好餓,吃什麼好呢?', author_id=1)

指定Table

要進行的操作

欄位名稱

欄位內要放入的內容

Read data

>>> Post.objects.all()

<QuerySet [<Post: My First Trip>, <Post: My Second Trip>, <Post: Django 大冒險>]>

>>> Post.objects.get(id=1)

<Post: My First Trip>

>>> Post.objects.filter(title__contains='Trip')

<QuerySet [<Post: My First Trip>, <Post: My Second Trip>]>

Read data

>>> Post.objects.order_by('created_date')
<QuerySet [<Post: ASas>, <Post: qwq>, <Post: cxvc>, <Post: Django 大冒險>]>

>>> Post.objects.order_by('-created_date')
<QuerySet [<Post: Django 大冒險>, <Post: cxvc>, <Post: qwq>, <Post: ASas>]>

Update data

>>> posts = Post.objects.filter(title__contains='Trip')
>>> posts

<QuerySet [<Post: My First Trip>, <Post: My Second Trip>]>

>>> posts[0].text
'肚子好餓,吃什麼好呢?'

>>> posts.update(text='123')
2

>>> posts[0].text
'123'

Delete data

>>> posts.delete()
(2, {'blog.Post': 2})

>>> Post.objects.all()
<QuerySet [<Post: Django 大冒險>]>

Use data to web

打開 trips/views.py

#trips/views.py

# # 新增
from django.shortcuts import render
from blog.models import Post

# 新增
def home(request):
	post_list = Post.objects.all()
	return render(request, 'home.html', {
		'post_list': post_list,
	})

打開 mysite/urls.py

# mysite/urls.py
from trips.views import hello_world, home

urlpatterns = [
    path('admin/', admin.site.urls), 
    path('hello/', hello_world),
    # 新增
    path('home/', home),
]

在 blog 的資料夾內新建一個 templates 資料夾,並創建 home.html

<!-- home.html -->

{{ post_list }}

使用 for 迴圈取出 list 內的資料

<!-- home.html -->

{% for post in post_list %}
    <div>
    {{ post.title }}
    {{ post.published_date }}
    {{ post.text }}
    </div>
{% endfor %}
$ python manage.py runserver

Thanks for listening.

References

Django database

By arashi

Django database

  • 148