Django中型專案的目錄結構和一個應用建立啟動示例

海上华帆發表於2024-05-25

一箇中等Django專案的目錄結構包含多個應用、配置檔案、靜態檔案和模板檔案等。

myproject/
├── manage.py        # Django專案管理指令碼,用於執行伺服器、遷移資料庫等管理命令
├── myproject/       # 專案配置目錄,包含全域性配置檔案和靜態、模板檔案
│   ├── __init__.py  # 標識這是一個Python包
│   ├── asgi.py      # ASGI配置檔案,用於部署非同步伺服器
│   ├── settings.py  # 專案配置檔案,通常用於簡單專案,對於中型專案建議拆分成多個配置檔案
│   ├── urls.py      # 專案的URL路由配置檔案
│   ├── wsgi.py      # WSGI配置檔案,用於部署伺服器
│   ├── settings/    # 拆分的配置檔案目錄
│   │   ├── __init__.py # 標識這是一個Python包
│   │   ├── base.py     # 基本配置檔案,包含所有環境的通用配置
│   │   ├── development.py # 開發環境的配置檔案
│   │   ├── production.py  #生產環境的配置檔案
│   ├── static/       # 靜態檔案目錄,存放CSS、JavaScript和圖片等靜態資源
│   │   ├── css/
│   │   ├── js/
│   │   ├── images/
│   ├── templates/    # 模板檔案目錄,存放HTML模板檔案
│       ├── base.html # 通用的基礎模板,可以在其他模板檔案中繼承
│       ├── ...
│
├── apps/             # 應用目錄,包含專案中的所有Django應用
│   ├── __init__.py   # 標識這是一個Python包
│   ├── app1/         # 其中一個Django應用目錄
│   │   ├── __init__.py  
│   │   ├── admin.py  #註冊Django Admin後臺的模型
│   │   ├── apps.py   # 應用配置檔案
│   │   ├── models.py # 資料庫模型定義檔案
│   │   ├── tests.py  # 測試檔案
│   │   ├── views.py  # 檢視函式或類檢視定義檔案
│   │   ├── urls.py   # 應用的URL路由配置檔案
│   │   ├── migrations/ #資料庫遷移檔案目錄
│   │       ├── __init__.py
│   ├── app2/
│       ├── __init__.py
│       ├── admin.py
│       ├── apps.py
│       ├── models.py
│       ├── tests.py
│       ├── views.py
│       ├── urls.py
│       ├── migrations/
│           ├── __init__.py
│
├── requirements/ # 依賴檔案目錄,存放不同環境的依賴檔案
│   ├── base.txt  #通用依賴檔案
│   ├── development.txt  # 開發環境的依賴檔案
│   ├── production.txt   # 生產環境的依賴檔案
│
├── .gitignore  # Git忽略檔案,列出不需要提交到版本控制系統的檔案或目錄
├── README.md   # 專案的README檔案,通常包含專案的簡介、安裝和使用說明等。

以其中一個app應用的建立啟動為例,說明其中涉及的重點和難點

  1. 建立專案和應用
    首先,確保已經啟用了虛擬環境,並在專案目錄下。
source /home/lyh/django/venv/bin/activate
django-admin startproject djangoweb
cd djangoweb
python manage.py startapp blog
  1. 專案結構
    此時的目錄結構如下:
djangoweb/
  manage.py
  djangoweb/
    __init__.py
    asgi.py
    settings.py
    urls.py
    wsgi.py
  blog/
    __init__.py
    admin.py
    apps.py
    models.py
    tests.py
    views.py
    migrations/
      __init__.py
  1. 配置應用
    djangoweb/settings.py檔案中,新增 blogINSTALLED_APPS列表中:
INSTALLED_APPS = [
  ...
  'blog',
]
  1. 建立模型
    blog/models.py中,定義一個簡單的部落格文章模型:
from django.db import models
class Post(models.Model):
  title = models.CharField(max_length=100)
  content = models.TextField()
  created_at = models.DateTimeField(auto_now_add=True)

  def __str__(self):
    return self.title
  1. 建立和應用遷移
    建立資料庫遷移並應用:
python manage.py makemigrations blog
python manage.py migrate
  1. 註冊模型到Admin後臺
    blog/admin.py中註冊模型:
from django.contrib import admin
from .models import Post

admin.site.register(Post)
  1. 建立檢視
    blog/views.py中,建立一個簡單的檢視來顯示部落格文章列表:
from django.shortcuts import render
from .models import Post
def index(request):
  posts = Post.objects.all()
  return render(request, 'blog/index.html', {'posts':posts})
  1. 建立URL配置
    blog目錄下建立一個urls.py檔案,並配置URL:
from django.urls import path
from . import views

urlpatterns = [
  path('', views.index, name='index'),
]

djangoweb/urls.py中包含blog應用的URL配置:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
  path('admin/', admin.site.urls),
  path('blog/', include('blog.urls')),
]
  1. 建立模板
    blog目錄下建立templates/blog目錄,並建立index.html模板檔案:
blog/
    templates/
        blog/
            index.html

index.html中新增以下內容:

<!DOCTYPE html>
<html>
<head>
    <title>Blog</title>
</head>
<body>
    <h1>Blog Posts</h1>
    <ul>
        {% for post in posts %}
          <li>{{ post.title }} - {{ post.created_at }} </li>
        {% endfor %}
    </ul>
</body>
</html>
  1. 執行開發伺服器
    啟動Django開發伺服器:
    python manage.py runserver 0.0.0.0:8000
    在瀏覽器中訪問http://192.168.2.101/blog/,應該會看到一個顯示所有部落格文章的頁面。

重點和難點

  1. 模型和資料庫遷移:定義模型後,必須建立和應用遷移。這是管理資料庫模式的關鍵步驟,可能會出現遷移衝突或錯誤。
  2. URL配置:正確配置URL路徑,使得不同應用的URL不衝突,需要注意路徑的包含和名稱空間。
  3. 模板系統:正確設定模板目錄和檔案,並在檢視中正確渲染模板。需要確保模板路徑和名稱正確。
  4. 檢視和查詢集:在檢視中處理查詢集,並將資料傳遞給模板渲染。處理複雜查詢可能會影響效能,需要最佳化查詢。
  5. Admin後臺配置:註冊模型以便在Admin後臺管理資料,這對於除錯和管理資料非常有幫助。

透過以上步驟,可以建立和啟動一個基本的Django應用。

相關文章