Django 安裝及基本配置

Django 安裝及基本設置

Django簡介

官網:https://www.djangoproject.com
官方文檔:https://docs.djangoproject.com

Django安裝

  • 測試環境:python3.6.3
  • Django版本:2.1.7

Django任務命令行工具

  • django-admin

         Type 'django-admin help <subcommand>' for help on a specific subcommand.
         
         Available subcommands:
             
             [django]
                 check
                compilemessages
                 createcachetable
                 dbshell
                 diffsettings
                 dumpdata
                 flush
                 inspectdb
                 loaddata
                 makemessages
                 makemigrations
                 migrate
                 runserver
                 sendtestemail
                 shell
                 showmigrations
                 sqlflush
                 sqlmigrate
                 sqlsequencereset
                 squashmigrations
                 startapp
                 startproject
                 test
                 testserver
             Note that only Django core commands are listed as settings are not properly configured (error: Requested setting 		INSTALLED_APPS,         but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure()          before accessing settings.).
    
  • manager.py

    manager.py是對django-amin的簡單封裝。

        Type 'manage.py help <subcommand>' for help on a specific subcommand.
         
         Available subcommands:
         
         [auth]
             changepassword
             createsuperuser
         
         [contenttypes]
             remove_stale_contenttypes
         
         [django]
             check
             compilemessages
             createcachetable
             dbshell
             diffsettings
             dumpdata
             flush
             inspectdb
             loaddata
             makemessages
             makemigrations
             migrate
             sendtestemail
             shell
             showmigrations
             sqlflush
             sqlmigrate
             sqlsequencereset
             squashmigrations
             startapp
             startproject
             test
             testserver
         
         [sessions]
             clearsessions
         
         [staticfiles]
             collectstatic
             findstatic
             runserver
    

Django項目創建

  • 方法一:

    工作目錄執行:django-admin startproject mysite
    mysite爲項目名稱,可任意命名

    • 目錄結構1:

    工作目錄:

    mysite: 根目錄

    manage.py
    mysite:

    __init__.py
    settings.py
    urls.py
    wsgi.py

  • 方法二:

    工作目錄執行:django-admin startproject mysite .
    區別在於方法一在項目外層會創建mysite命名的根目錄。

    • 目錄結構2:

    工作目錄:

    manage.py
    mysite:

    __init__.py
    settings.py
    urls.py
    wsgi.py

  • 結果測試:

    根目錄執行: python manager.py runserver
    根目錄下生成項目數據庫文件db.sqlite3
    結果如下則表示成功:

    Performing system checks...
    
    System check identified no issues (0 silenced).
    
    You have 15 unapplied migration(s). Your project may not work properly until you
     apply the migrations for app(s): admin, auth, contenttypes, sessions.
    Run 'python manage.py migrate' to apply them.
    February 28, 2019 - 11:12:52
    Django version 2.1.7, using settings 'mysite.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CTRL-BREAK.
    

創建應用

Django中具體的功能組件稱爲‘應用’。

  • 方法一:

    工作目錄中執行python manager.py startapp blog創建名爲blog的應用。

  • 方法二:

    工作目錄中執行django-admin startapp blog創建名爲blog的應用。

  • 目錄結構:

    工作目錄:

    mysite: 根目錄

    blog: blog應用目錄

    migrations: blog應用數據庫表結構

    __init__.py

    __init__.py
    admin.py 註冊數據模型,自定義後臺管理功能等
    apps.py blog應用配置,比如應用後臺命名等
    models.py blog應用數據模型
    tests.py 編寫測試文檔來測試所建立的應用
    views.py 定義函數視圖或類視圖。

    mysite: mysite項目目錄

    __init__.py
    settings.py mysite項目初始化設置(包括數據庫,應用添加、中間件等)
    urls.py mysite項目路由配置(視圖函數或應用的url.py文件的映射關係)
    wsgi.py Web Server Gateway Interface

    manage.py 項目任務命令工具
    db.sqlite3 使用SqlLite3本地數據庫時生成的默認數據庫文件,名稱可以在settings.py文件中定義

settings.py模塊

項目配置,如果不配置相關字段默認值在 django/conf/global_settings.py
python manage.py diffsettings 可以查看與默認配置的差異

  • BASE_DIR

    項目根目錄
    如何將多個應用放置到apps目錄下:
    1. 在於manger.py同級目錄下創建apps文件夾。
    2. 將已創建的應用文件剪切到apps目錄下。
    3. 將apps目錄插入臨時環境變量路徑下:sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
    4. pycharm中可以將apps目錄設置爲源碼路徑,右鍵->Make Director as -> Resource Root。

  • SECRET_KEY

    用於安全加密、簽名等,不能爲空。
    創建項目時生成,生成方式如下:\

        from django.core.management import utils  
        utils.get_random_secret_key()  
    
  • DEBUG

    標記開發模式生產環境,值True | False

  • ALLOWED_HOSTS

    允許訪問的域名或者IP,DEBUG爲True時可以爲空。

  • INSTALLED_APPS

    應用註冊,創建的應用配置到這裏才能使用

        INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog',]
    
  • MIDDLEWARE

    中間件
    django請求/響應處理的鉤子框架,這是一個輕量級的插件系統,
    用於在全球範圍內改變django的輸入或輸出。
    django的中間件在settings的MIDDLEWARE列表中配置激活,
    中間件有嚴格的依賴順序,按列表順序自上而下的執行。

        MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',]
    
  • ROOT_URLCONF

    在settings.py文件中通過ROOT_URLCONF指定根級url的配置。
    ROOT_URLCONF = 'mysite.urls'

  • TEMPLATES

    'APP_DIRS': True, 按照app路徑下templates路徑搜索,
    'APP_DIRS': False, 按照DIRS字段設置路徑搜索,
    擴展:Django如何採用jinja2的模板引擎

    	TEMPLATES = [{
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [
                os.path.join(BASE_DIR, 'templates'),
                os.path.join(BASE_DIR, 'statics')],
            'APP_DIRS': False,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',],
            },
        },]
    
  • WSGI_APPLICATION

    Django不是完整的web後端框架,它需要和一個WSGI服務器配套,
    由WSGI服務器負責網絡通訊部分, django依賴wsgi接口創建socket方法。
    該項指向 mystie 項目目錄下wsgi.py的application方法。
    WSGI_APPLICATION = 'mysite.wsgi.application'

  • DATABASES

    此項配置數據庫引擎
    django多數據庫聯用配置方式

        DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
            'OPTIONS': {
                'timeout': 20,
            }
        },
    	}
    
  • AUTH_PASSWORD_VALIDATORS

    配置密碼強度驗證方式

	AUTH_PASSWORD_VALIDATORS = [
	    {
	        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
	    },
	    {
	        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
	    },
	    {
	        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
	    },
	    {
	        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
	    },
	]
  • LANGUAGE_CODE

    語言設置
    英語:‘en-us’
    中文簡體:‘zh-hans’
    中文繁體:‘zh-hant’

  • TIME_ZONE

    時區設置
    世界時間:‘UTC’
    中國時間:‘Asia/Shanghai’

  • USE_I18N

    Internationalization, I18N表示I與N之間有18個字母。
    Django是否開啓國際化支持

  • USE_L10N

    localization, L10N表示L與N之間有10個字母。
    Django本地化支持

  • USE_TZ

    跨時區操作,時間強制轉換成UTC時間
    國內服務可以設置爲False

  • STATIC_URL

    靜態文件路由
    STATIC_URL = '/static/'

  • STATICFILES_DIRS

    開發模式靜態文件存放路徑,
    默認情況下靜態文件放置在每個應用的static文件夾下,
    如果我們需要將所有靜態文件都歸類到一個目錄,則需要如下配置:

    	STATICFILES_DIRS = [
    	    os.path.join(BASE_DIR, 'statics'),
    	]
    
  • STATIC_ROOT

    生成環境靜態文件存放路徑
    STATIC_ROOT = os.path.join(BASE_DIR, "all_statics")
    在部署生成環境時運行python manage.py collectstatic會把所有靜態文件匯聚到該路徑下。

  • MEDIA_URL

    上傳文件路由
    MEDIA_URL = '/media/'

  • MEDIA_ROOT

    用戶上傳目錄
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    在FileField、ImageFIled等字段中指定upload_to字段用於規定文件在MEDIA_ROOT目錄下的位置。

命令回顧

  • 創建Django項目
    django-admin.py startproject project_name

  • 創建應用
    python manage.py startapp app_namedjango-admin.py startapp app_name

  • 創建數據表

    • 創建更改的文件
      python manage.py makemigrations
    • 將生成的py文件應用到數據庫
      python manage.py migrate
  • 清空數據表,刪除所有數據但保留數據表
    python manage.py flush

  • 數據庫導出,appname不指定則默認導出所有應用的數據庫
    python manage.py dumpdata [ appname] > data.json

  • 數據庫導入,不需要指定appname
    python manage.py loaddata data.json

  • 啓動開發服務器

    • 一般模式,默認8000端口:
      python manage.py runserver

    • 當提示端口被佔用的時候,可以指定其他端口:
      python manage.py runserver 8001

    • 設置所有網絡可以訪問:
      python manage.py runserver 0.0.0.0:8000

    • 創建超管
      python manage.py createsuperuser

    • 修改用戶密碼
      python manage.py changepassword username

  • 進入django項目環境終端

    開發過程中如果不清楚運行結果可以通過終端調試

    python manage.py shell

  • 進入數據庫shell環境
    python manage.py dbshell

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章