iT邦幫忙

0

自我筆記 - django 系列 [基礎篇]

django 基礎篇

主要說明如何創建一個基本的 django 服務。

基本工具

  • env虛擬機 - virtualenvwrapper-win

    • 安裝: pip install virtualenvwrapper-win
    • 基本指令:
      • 創建: mkvirtualenv <虛擬機名稱>
      • 列表: workon
      • 進入: workon <虛擬機名稱>
      • 刪除: rmvirtualenv <虛擬機名稱>
  • python

  • django

    • 版本: 2.1.7 官方文檔
    • 安裝: pip install django==2.1.7

基本概念

  • Model: 與資料庫欄位對映
  • Template: 可於一般HTML內加入for、if等等判斷
  • View: 邏輯編寫
    https://ithelp.ithome.com.tw/upload/images/20210505/20132538E9IkCs2jR9.jpg

專案創建

  • django-admin startproject <專案名稱>
  • python manage.py runserve 開啟本地伺服器,預設 8000 port
  目錄結構
  |   manage.py
  \---djangoAPI
          asgi.py
          settings.py
          urls.py
          wsgi.py
          __init__.py
  • manage.py: django命令包 參考
  • asgi.py: ASGI兼容的Web服務器上的入口
  • settings.py: 項目配置文件(DB、金鑰、引用apps...)
  • urls.py: 主要路由器(各功能urls可於此集中)
  • wsgi.py: WSGI兼容的Web服務器上的入口
  • __init__.py: 一個空文件,告訴python這個目錄是一個python包 參考

創建功能模組

  • python manage.py startapp <功能名稱>
  目錄結構
  |   manage.py
  \---testSetting
      |   admin.py
      |   apps.py
      |   models.py
      |   tests.py
      |   views.py
      |   __init__.py
      |   urls.py(自行定義)
      |
      \---migrations
              __init__.py
  • admin.py: 管理員設置
  • migrations: 資料庫創建紀錄
  • models.py: 資料庫模型
  • views.py: 功能邏輯
  • urls.py: 該功能路由

基本範例

  • 視圖 - views

# app(testSetting) > views.py

from django.http import JsonResponse # 回傳json格式

def test(request):
  data = {
    'msg': '這是一個測試的視圖'
  }
  return JsonResponse(data)
  • 路由 - urls

# 於各功能模組中新增 `urls.py` 檔案
# app(testSetting) > urls.py
from django.urls import path
from . import views

urlpatterns = [
  path('firstApi', views.firstApi, name = 'firstApi'),
]
# 於 ***專案*** 路由載入 ***功能模組***
# project(djangoAPI) > settings.py
from django.urls import path, include

urlpatterns = [
    path('testSetting/', include('testSetting.urls'))
]

於網址列輸入時,須以前綴表示EX: 127.0.0.0.1/testSetting/firstApi,如此一來在擁有很多個app時,如果有相同的views.firstApi就能夠區分

測試

  • 於postMan測試如下:

https://ithelp.ithome.com.tw/upload/images/20210505/20132538XgWjJaU8t8.png


尚未有邦友留言

立即登入留言