1. 程式人生 > 實用技巧 >Django 入門篇2:初始化專案

Django 入門篇2:初始化專案

settings.py 基本配置

  • 註冊應用:settings.py 中 INSTALLED_APPS 中新增已生成的應用名
  • 模板目錄:建立一個模板目錄 templates
    • settings.py 中 TEMPLATES 中的 'DIRS' 項設為 [os.path.join(BASE_DIR, 'templates')]
  • 本地化:settings.py 中 LANGUAGE_CODE = 'zh-hans' , TIME_ZONE = 'Asia/Shanghai'
  • 退出除錯模式:settings.py 中 DEBUG = False:在網頁中不顯示錯誤除錯資訊,例如顯示一個標準的 404 頁面
    • 若設定 DEBUG = False,則必須設定 ALLOWED_HOSTS
      = ['*']
  • 配置資料庫:settings.py 中 DATABASES 中的 'ENGINE' 項中把 sqlite3 替換為自己的資料庫,如 mysql
    • 'NAME' 項內容替換為資料庫名
    • 另外設定 'USER', 'PASSWORD', 'HOST', PORT'
    • 若資料庫在虛擬機器,'HOST' 不要寫主機名,地址解析會讓訪問很慢
  • 配置靜態檔案目錄:新建 static 目錄,settings.py 中新增 STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

其他配置

  • 建立管理員python manage.py createsuperuser

  • 後臺管理註冊模型類:admin.py,from 應用.models import 模型類 admin.site.register(模型類)

  • 整理應用目錄:新建一個名為 apps 包,把應用都放進去,使專案結構更清晰

    • 簡化應用路徑:settings.py 中 import sys, sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
  • 配置 URL:在應用的 path() 中加上 namespace='應用名' 的引數,用於反向解析 URL

配置 MySQL

  • pip install pymysql mysqlclient

  • mysqlclient 與高版本 Python 不完全相容,專案可能會報錯,把 raise 錯誤的語句註釋掉即可

  • 在專案的 __init.py__import pymysql pymysql.install_as_MySQLdb()

  • settings.py > DATABASES 配置資料庫資訊

    # settings.py
    DATABASES = {
        'default': {
            # 'ENGINE': 'django.db.backends.sqlite3',
            # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
            'ENGINE': 'django.db.backends.mysql', # 使用mysql資料庫
            'NAME': 'py_db', # 資料庫名
            'USER': 'root', # 資料庫使用者
            'PASSWORD': '1', # 密碼
            'HOST': 'localhost', # 資料庫IP 
            'PORT': 3306, # mysql預設埠3306
         }
    }
    

配置模型類基類

  • 新建名為 db 的包,新建 base_model.py

    from django.db import models
    
    class BaseModel(models.Model):
        create_time = models.DateTimeField(auto_now_add=True, verbose_name='建立時間')
        update_time = models.DateTimeField(auto_now=True, verbose_name='更新時間')
        is_delete = models.BooleanField(default=False, verbose_name='刪除標記')
        
        class Meta:
            abstract = True
    

建立自定義使用者類

  • 自定義使用者模型

    from django.contrib.auth.models import AbstractUser
    class User(AbstractUser, BaseModel):
        pass
    
  • setting.py 中註冊:setting.py 中新增 AUTH_USER_MODEL='user.User',並且一定要在專案首次進行遷移之前設定此項

    • 新增此項後,資料庫將不再有名為 auth_user 的表
    • createsuperuser 命令將會儲存到 AUTH_USER_MODEL 指定的表中去
  • 在 admin.py 中註冊

    from django.contrib import admin
    from django.contrib.auth.admin import UserAdmin
    from apps.user.models import User
    
    admin.site.register(User, UserAdmin)
    

富文字編輯器 tinymce

  • 在需要用到 HTMLField 的模型類中匯入 from tinymce.models import HTMLField

  • URLconf 中新增 path('tinymce/', include('tinymce.urls'))

  • 在settings.py中,應用註冊 'tinymce' 項,新增 tinymce 設定項

TINEMCE_DEFAULT_CONFIG = {
    'theme': 'advanced',
    'width': 600,
    'height': 400,
}