Django 入門介紹


Django介紹

   Django框架是PythonWeb三大主流框架之一,以其功能強大全面而受到眾多開發者追捧,現如今Django已經更新到3版本,但是並不推薦使用,更多建議使用1版本。

Django版本 Python版本
1.11 2.7、3.4、3.5、3.6、3.7(在1.11.17中添加)
2.0 3.4、3.5、3.6、3.7
2.1 3.5、3.6、3.7
2.2 3.5、3.6、3.7、3.8(在2.2.8中添加)
3.0、3.1 3.6、3.7、3.8

   img

Django安裝

   使用pip install django==1.11.11安裝Django

   當下載完成后,可以使用django-admin來查看是否安裝成功

C:\Users\雲崖先生>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.).

常用命令

   第一次接觸Django,這里有一些常用的CMD命令

基本命令 解釋說明
django-admin startproject 項目名稱 創建一個Django項目
python manage.py startapp 應用名稱 創建一個APP
python manage.py runserver ip地址 port號 運行Django項目,如不指定IP與PORT默認為127.0.0.1與8000
python manage.py makemigrations 創建數據庫的py文件,即模型表
python manage.py migrate 將生成的py文件模型表同步應用到數據庫
python manage.py flush 數據庫中數據全部清除,只留下表
python manage.py createsuperuser 創建管理員用戶,密碼(郵箱可以留空)
python manage.py changepassword 用戶名 修改管理員用戶密碼

注意事項

   使用Django時,有以下幾條建議

   1.計算機名稱不能包含中文

   2.IDE中一個窗口只開一個項目

   3.項目中所有文件夾均不要使用中文

   4.Python解釋器請按照與之相對的Django版本進行選擇,我這里使用Python3.6.6

   5.如果你使用GoogleChorme瀏覽器,強烈建議勾選上設置中的Disable cache(while DevTools is open)選項。具體設置流程:F12打開開發者工具,點擊開發者工具欄上的小齒輪,找到Network選項下的設置項即可。

目錄介紹

   接下來我們使用命令行創建出一個新的Django項目。

django-admin startproject Perfect 

   然后再新建一個APP,在Django中每一個 APP都相當於一個功能的集合,如有處理學生相關的業務就創建一個名為studentAPP,老師相關的業務就創建一個名為teacherAPP

python manage.py startapp app01  # 注意在此之前要cd進項目根目錄

   目錄如下:

-- PERFECT	項目文件夾

	-- app01	應用文件夾
		-- migrations.py		數據庫遷徙文件
		-- admin.py 			django后台管理
		-- apps.py				注冊相關
		-- models.py			數據庫相關(ORM類)
		-- tests.py				測試文件
		-- views.py				視圖相關函數
		
	-- Perfect	項目全局文件夾
		-- settings.py			全局配置文件
		-- urls.py				路由視圖關系
		-- wsgi.py				wsgiref模塊(Django基於該模塊)
		
	-- manage.py 入口文件
	-- sqlite3	 自帶微型數據庫(可有可無)

   這個時候我們應該做一件事,在項目根目錄下新建一個templates文件夾,用於存放HTML文檔。

   (如果你是使用Pycharm進行創建Django項目可忽略這一步)

配置文件

   打開項目全局文件夾下的settings.py,認識一下各個組件及其功能。

"""
Django settings for Perfect project.

Generated by 'django-admin startproject' using Django 1.11.11.

For more information on this file, see
https://docs.djangoproject.com/en/1.11/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.11/ref/settings/
"""

import os

# 像這樣在項目內部構建路徑:os.path.join(BASE_DIR,...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# 快速啟動開發設置-不適合生產
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/

# SESSION相關的密鑰,上線之后一定要保密
SECRET_KEY = 'm00e=*1gwly+6$&_g=tk&rd)lu8p-v_)1k(y&@7p_xn663$ph#'

DEBUG = True # DEBUG信息,會給提示,上線后改為False即可

ALLOWED_HOSTS = [] # 允許訪問的主機,上線后改為 ["*"]


# 注冊的APP,新建一個APP后需要進行手動配置
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

# 中間件,新手玩家請注釋掉  'django.middleware.csrf.CsrfViewMiddleware',
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 = 'Perfect.urls'

# HTML文件存放路徑配置
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        '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 = 'Perfect.wsgi.application'


# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
# 項目指定用的數據庫,可以自行修改。默認使用sqlite3
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# https://docs.djangoproject.com/en/1.11/ref/settings/#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',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/1.11/topics/i18n/

LANGUAGE_CODE = 'en-us' # 語言

TIME_ZONE = 'UTC' # 時區

USE_I18N = True

USE_L10N = True

USE_TZ = True  # 改為False


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/

# 靜態文件,尤其重要
STATIC_URL = '/static/'

手動配置

   好了,在創建完APP后需要在配置文件中進行一些手動配置,分別是注冊APP,拼接HTML文檔路徑,這兩個是必須的。此外還可選擇性對csrf驗證中間件進行注釋,以及配置數據庫鏈接,配置靜態文件等等。

   這些都放在后面會說,后面會單獨開一章settings的文章來具體寫各個部分的用途。

   注意:如果使用Pycharm進行創建可忽略注冊APP與拼接HTML文檔路徑,這些Pycharm都會幫你自動做好,但是還是建議你看一眼。

注冊APP

   注冊APP非常簡單,只需要在配置文件中找到下面的位置添加上上下面一條信息即可。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',
]

   也可以進行簡寫

'app01',

HTML路徑

   拼接HTML文檔路徑也是在配置文件中添加。

   以下示例中templates是我對存放HTML文檔的文件夾取的名字,推薦使用這個名字。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,"templates")],  # 在這里添加上 os.path.join(BASE_DIR,"templates")
        'APP_DIRS': True,
        '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',
            ],
        },
    },
]

啟動Django

   上面的基礎工作做完之后,可以嘗試啟動一下Django服務了,但是為了體現效果這里還是超出范疇的寫一點東西。

   返回一個簡單的登錄頁面吧,這里不涉及數據庫,靜態文件等操作,所以你要做的就只有3步

   1.配置路由,

   2.配置一個視圖函數,

   3.寫一個頁面

配置路由

   配置路由的作用在於對不同的請求路徑進行處理,返回不同的頁面,這里面其實也有很多知識點,先不涉及做個簡單的。

   在項目全局文件夾下,打開urls.py,導入一下app01views.py,再插入一條代碼。

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r"^login/",views.login),  # 新增代碼
]

編寫函數

   現在就可以做一下app01下的views.py中的內容了,由於路由里對於http://127.0.0.1:8000/login的請求處理函數是login,所以我們需要寫一個login函數來進行處理。

from django.shortcuts import render

# Create your views here.
def login(request):
    return render(request,"login.html") # 必須返回request

頁面編寫

   上面的請求處理函數返回了一個login.html,這里其實就是返回的templates中的HTML文檔,可惜我們現在還沒有login.html,所以新建一個即可。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            list-style: none;
        }
        
        body {
            width: 100vw;
            height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        body main form{
            padding: 5px;
            border: #ddd solid 1px;
            background: #eee;

        }
        body main form p{
            margin: 10px;
        }
    </style>
</head>

<body>
    <main>
        <form action="#">
            <p><input type="text" name="username" placeholder="請輸入您的用戶名"></p>
            <p><input type="password" name="password" placeholder="請輸入您的密碼"></p>
            <p><button type="submit" disabled>提交</button></p>
        </form>
    </main>
</body>

</html>

結果測試

   現在將開啟Django服務進行測試操作

python manage.py runserver

   看下圖,已經成功到訪問到了頁面,其實所有的Web框架流程無非就是解析請求資源,處理數據,返回HTML文檔這三步驟。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM