Django基礎(chǔ)
官網(wǎng):https://www.djangoproject.com/
-
Django安裝
pip install Django==2.2.12
-
創(chuàng)建Django項目
-
命令行中創(chuàng)建項目
# 切換到準(zhǔn)備存儲Django項目的路徑 cd <Django項目的存儲路徑> # 創(chuàng)建項目 django-admin startproject <項目名稱>
-
Pycharm中創(chuàng)建項目(推薦敞斋,只有專業(yè)版的Pycharm才支持WEB開發(fā))
file -> New Project -> Django -> Project Interpreter:New Virtualenv environment ->勾選 Existing interpreter(已經(jīng)存在的解釋器)-> Interpreter選擇Python解釋器版本 -> 點(diǎn)擊Create -> open in new window
-
-
Django項目的目錄結(jié)構(gòu)
-
Django項目名稱目錄
__init__.py
:表示該文件夾可以被導(dǎo)入癣防。-
settings.py
:Django項目系統(tǒng)配置文件硝训。import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'p#%=itzh^ope9)=rdjy%^yn@@$y_$1x91*3)xn((*#13o+(r8_' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = [] # Application definition # 新建APP之后媚送,一定要告訴Django新建了APP INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app.apps.AppConfig', # 將新建的APP添加進(jìn)來 ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', # 學(xué)習(xí)Django階段先把這行注釋掉 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'Django.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [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', ], }, }, ] WSGI_APPLICATION = 'Django.wsgi.application' # Database # https://docs.djangoproject.com/en/2.2/ref/settings/#databases # 數(shù)據(jù)庫相關(guān)的配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } # Password validation # https://docs.djangoproject.com/en/2.2/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/2.2/topics/i18n/ LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.2/howto/static-files/ # 靜態(tài)文件夾的別名 STATIC_URL = '/static/' # 配置靜態(tài)文件路徑儒拂,所有靜態(tài)文件(css/js/圖片)都放在static文件夾中 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static") ]
-
urls.py
:用來管理項目的url資源的文件(URL和函數(shù)的對應(yīng)關(guān)系)班挖,項目中用到的URL地址都需要我們?nèi)ヅ渲谩?/p>from django.contrib import admin from django.urls import path from app import views urlpatterns = [ path('admin/', admin.site.urls), path('login/', views.login), # 將業(yè)務(wù)函數(shù)的對應(yīng)關(guān)系添加到這里 ]
views.py
:需要手動創(chuàng)建偿衰,wsgi.py
:Python服務(wù)器網(wǎng)關(guān)接口低匙,是Python應(yīng)用與Web服務(wù)器之間的接口一汽。
manage.py:是與項目進(jìn)行交互的命令行工具集的入口避消。
templates文件夾:存放HTML的文件夾(需要在
settings.py
中告訴Django去哪兒找這些HTML文件)-
static文件夾:需要手動創(chuàng)建。用于存放bootstrap召夹、fontawesome岩喷、jquery、圖片等监憎。也需要在
settings.py
中告訴Django去哪兒找這些文件)# 靜態(tài)文件保存路徑的別名 STATIC_URL = '/static/' # 所有的bootstrap纱意、fontawesome、jquery等靜態(tài)文件都放在static文件夾中 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), '/var/www/static/', ]
-
app文件夾:需要手動創(chuàng)建鲸阔。
- migration文件夾
-
__init__.py
:表示該文件夾可以被導(dǎo)入偷霉。 -
admin.py
: -
apps.py
:存放app相關(guān)的配置項。 -
models.py
: -
tests.py
:用于測試 -
views.py
:主要存放頁面對應(yīng)關(guān)系的業(yè)務(wù)邏輯(所有定義的函數(shù)都必須要帶有request參數(shù)褐筛,request參數(shù)保存了所有和用戶瀏覽器請求相關(guān)的數(shù)據(jù))类少。
-
-
啟動Django項目
-
命令行啟動
# 進(jìn)入manage.py所在的文件夾 cd <manage.py的路徑> # 啟動manage.py,如果不寫IP地址和端口渔扎,默認(rèn)從本機(jī)的8000端口啟動服務(wù) python3 manage.py runserver <IP地址>:<端口號>
在Pycharm中啟動Django項目
-
-
Django基礎(chǔ)必會三件套
-
HttpResponse
:內(nèi)部傳入一個字符串參數(shù)硫狞,返回給瀏覽器。# 在views.py文件中晃痴,導(dǎo)入HttpResponse from django.shortcuts import HttpResponse def index(request): # 業(yè)務(wù)邏輯代碼 return HttpResponse("OK")
-
render
:除接收request參數(shù)外残吩,還可以接收一個待渲染的模板文件和一個保存具體數(shù)據(jù)的字典參數(shù)。將數(shù)據(jù)填充進(jìn)模板文件倘核,最后把結(jié)果返回給瀏覽器泣侮。
def index(request): # 業(yè)務(wù)邏輯代碼 return render(request, "index.html", {'error': error_msg})
-
redirect
:接受一個URL參數(shù),表示跳轉(zhuǎn)到指定的URL(URL重定向)笤虫。def index(request): # 業(yè)務(wù)邏輯代碼 return redirect("/home/")
-
-
Django中的APP
一個Django項目可以分為很多個APP旁瘫,用來隔離不同功能模塊的代碼。
-
使用系統(tǒng)命令行創(chuàng)建APP
# 進(jìn)入Django項目的根目錄 cd <Django項目路徑> # 創(chuàng)建創(chuàng)建Django的APP python manage.py startapp <APP名稱>
使用Pycharm創(chuàng)建APP
-