摘要:
-
Web框架概述
-
Django簡介
-
Django項目創建
-
Django基礎必備三件套(HttpResponse、render、redirect)
?一、Web框架概述:
Python三大主流Web框架:
- Django:大而全,自帶了很多功能模塊,類似于航空母艦(缺點:笨重)
- Flask:短小精悍,自帶的功能模塊特別少,大部分都是依賴于?第三方模塊(小而輕)
- Tornado:異步非阻塞,?主要用于處理高IO,多路復用的情況,可以寫游戲后端
每一種框架都包含3部分:
- a: socket
- b: 路由與視圖函數
- c: 模板渲染
Django:
- a:?用別人的 wsgiref
- b:?自己寫的
- c:?自己寫的
Flask:
- a:?用別人的 werkzeug
- b:?自己寫的
- c:?用別人的 jingja2
Tornado:
- a:?自己寫的
- b:?自己寫的
- c:?自己寫的
二、Django簡介:
djang下載:推薦下載1.11.11版本
命令行直接下載 :pip3 install django==1.11.11
pycharm下載
驗證是否下載成功:django-admin
?三、創建Django項目的方式:
- 方式1(命令行創建):
創建Django項目:django-admin startproject?項目名
創建app應用:python3 manage.py startapp app01
啟動Django項目:python3 manage.py runserver
注意:用命令行創建的Django項目默認不會自動創建templates文件夾,需要自己手動創建(注意一定要將文件夾路徑添加到配置文件中) - 方式2:(pycharm創建)
FILE >>> new project 選擇第二個django 需要注意名字不能有中文,選擇本地的解釋器,勾選后臺管理
創建app
pycharm命令行創建:python3 manage.py startapp app01
Tools下面run manage task功能欄:啟動點小綠色箭頭強調:
1.用django一定要保證只有一個在運行狀態 切記切記!!!!!!!
2.一定記得清瀏覽器的緩存 - ?app(應用)的概念:
一個Django項目就好比是一所大學
而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' # 也可以簡寫 ]
- Django項目文件夾結構解讀:
應用名migrations 數據庫遷移記錄相關數據admin.py django后臺管理相關models.py 模型表相關views.py 視圖函數相關 項目名settings.py 配置文件urls.py 路由與視圖函數的映射關系 templates項目用到的所有的html文件 manage.py django入口文件
- Django項目的運行:
命令行:定位到項目目錄下之后:python3 manage.py runserver
不過一般我們都在pycharm中運行:
- 模板文件配置:(這里再提一下,前面命令行方式創建項目時候也說過)
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')] # 這是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',],},}, ]
- 靜態文件配置:
STATIC_URL = '/static/' # HTML中使用的靜態文件夾前綴 STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"), # 靜態文件存放位置 ]
注意:
剛開始學習時可在配置文件中暫時禁用csrf中間件,方便表單提交測試。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', ]
四、Django基礎必備三件套(小白必會三板斧)
-
from django.shortcuts import HttpResponse, render, redirect
# HttpResponse
內部傳入一個字符串參數,返回給瀏覽器。
例如:
def index(request):# 業務邏輯代碼return HttpResponse("OK")
# render
除request參數外還接受一個待渲染的模板文件和一個保存具體數據的字典參數。
將數據填充進模板文件,最后把結果返回給瀏覽器。(類似于我們上面用到的jinja2)
兩種給前端頁面傳值的方式:
第一種: def reg(request):user_dict = {'name':'jason','password':'123'}return render(request,'reg.html',{'user_dict':user_dict})第二種: def reg(request):user_dict = {'name':'jason','password':'123'}return render(request,'reg.html',locals())
# redirect(重定向)
接受一個URL參數,表示跳轉到指定的URL。
例如:
def index(request):# 業務邏輯代碼return redirect("/home/")
?