一、安裝Django
一般來說新版都可能會(huì)存在未知的bug膛檀,相對(duì)最新版本秀撇,一般來說我們都會(huì)指定安裝一個(gè)穩(wěn)定的版本。
pip3 install django
#自動(dòng)安裝最新版的
pip3 install django==1.11.9
#指定安裝版本
二浩考、創(chuàng)建一個(gè)django項(xiàng)目
- 進(jìn)入控制臺(tái)輸入以下命令:
django-admin startproject mysite
就能創(chuàng)建出一個(gè)叫mysite的Django 項(xiàng)目。
- 進(jìn)入控制臺(tái)輸入以下命令:
-
假如是使用Pycharm旗艦版的話可以直接使用Pycharm創(chuàng)建django項(xiàng)目被盈,如下圖所示析孽,如果是社區(qū)版的話則不具備這個(gè)功能。兩者創(chuàng)建項(xiàng)目并無太大區(qū)別只怎,按個(gè)人喜歡來選擇袜瞬。
pycharm創(chuàng)建django.png
-
三、目錄介紹
mysite/
├── manage.py # 管理文件
└── mysite # 項(xiàng)目目錄
├── __init__.py
├── settings.py # 配置
├── urls.py # 路由 --> URL和函數(shù)的對(duì)應(yīng)關(guān)系
└── wsgi.py # runserver命令就使用wsgiref模塊做簡(jiǎn)單的web server
四身堡、運(yùn)行Django項(xiàng)目
先cd mysite
切換進(jìn)入Django項(xiàng)目路徑邓尤,然后執(zhí)行以下命令:
python manage.py runserver 127.0.0.1:8000
五、Setting配置文件
- 模板文件配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "template")], # template文件夾位置
'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',
],
},
},
]
- 靜態(tài)文件配置
STATIC_URL = '/static/' # HTML中使用的靜態(tài)文件夾前綴
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"), # 靜態(tài)文件存放位置
]
-
csrf中間件
剛開始學(xué)習(xí)時(shí)可在配置文件中暫時(shí)禁用csrf中間件贴谎,方便表單提交測(cè)試汞扎。
csrf中間件是一個(gè)表單安全認(rèn)證,就是在提交表單到后臺(tái)的時(shí)候會(huì)附帶一個(gè)類似認(rèn)證碼的東西來校驗(yàn)提交的內(nèi)容是否一致擅这。注釋了就表示不用這個(gè)安全認(rèn)證澈魄,之后會(huì)再來說明這個(gè)認(rèn)證。
-
csrf中間件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware', #注釋csrf中間件
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
六仲翎、三種返回
from django.shortcuts import HttpResponse, render, redirect
- 1 . HttpResponse
內(nèi)部傳入一個(gè)字符串參數(shù)痹扇,返回給瀏覽器。例如:
def index(request):
# 業(yè)務(wù)邏輯代碼
return HttpResponse("OK")
-
render
除request參數(shù)外還接受一個(gè)待渲染的模板文件和一個(gè)保存具體數(shù)據(jù)的字典參數(shù)溯香。
將數(shù)據(jù)填充進(jìn)模板文件鲫构,最后把結(jié)果返回給瀏覽器。(jinja2)例如:
-
render
def index(request):
# 業(yè)務(wù)邏輯代碼
return render(request, "index.html", {"name": "alex", "hobby": ["燙頭", "泡吧"]})
-
redirect
接受一個(gè)URL參數(shù)玫坛,表示跳轉(zhuǎn)到指定的URL结笨。重定向,例如:
-
redirect
def index(request):
# 業(yè)務(wù)邏輯代碼
return redirect("/home/")
七湿镀、創(chuàng)建APP
一個(gè)Django項(xiàng)目可以分為很多個(gè)APP禀梳,用來隔離不同功能模塊的代碼。
在控制臺(tái)切換路徑到當(dāng)前Django項(xiàng)目下肠骆,直接使用以下命令創(chuàng)建:
python manage.py startapp app01
或者在Pycharm的Terminal輸入上面的命令
Terminal.png
創(chuàng)建出來的app目錄如下:
app01.png
創(chuàng)建出來的app還需要到setting.py注冊(cè)能用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',#自己創(chuàng)建的app到這里注冊(cè)
]
額外解釋:重定向是怎么回事算途?
重定向.png