Django框架環境搭建

Jarvis_You發表於2019-01-17

一.命令列搭建Django專案

  • 安裝django
# 在直譯器環境下安裝django 1.11.9
# 在真實python3環境下: pip3 install django==1.11.9
# 在虛擬環境下: 先啟用虛擬環境 => pip3 install django==1.11.9

# 檢視django版本: django-admin --version
複製程式碼
  • 建立專案
# 先前往目標路徑
# 建立專案: django-admin startproject proj_name
複製程式碼
  • 建立應用
# 進入專案根目錄
# 建立應用: python3 manage.py startapp app_name
# 去專案的settings檔案新增 應用名 到INSTALLED_APPS
複製程式碼
  • 啟動服務
# 在專案根目錄下: python3 manage.py runserver 127.0.0.1:8080
複製程式碼

二.Pycharm搭建專案

# 選擇有django環境的直譯器建立專案
# Tools -> Run manage.py Task... -> startapp app_name
# 正常執行專案來啟動
複製程式碼

三.專案響應請求

完成 http://127.0.0.1:8000/index 請求的處理

  • 在專案的urls.py中配置路由
# 檔案: 專案下 urls.py
import app.views as app_views # 建立的app下的檢視檔案
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'index', app_views.index) # 配置的路由
]
複製程式碼
  • 在具體應用下的檢視檔案為請求配置響應函式

  • 第一個響應

# 檔案: app應用下 views.py
from django.http import HttpResponse
def index(abc):
    return HttpResponse('hello django')
複製程式碼
  • 第一個模板頁面
from django.shortcuts import render
def view_action(request):
    return render(request, 'template_page.html')
複製程式碼
  • 第一個重定向
from django.shortcuts import redirect
def view_action(request):
    return redirect('/重定向的路由/')
複製程式碼

四.模板渲染-衝突處理

前提: 一個專案中有多個應用,每個應用都具有相同命名的模板頁面檔案, 如app與newapp都有各自的主頁index.html

  • 處理模板衝突
# 在settings.py檔案中如果配置了應用名

# 在自身應用資料夾下建立templates檔案,再在其中建立與應用名相同的資料夾,該應用的模板檔案都可以放在該資料夾下
# eg: newApp訪問自身主頁
def index(request):
    return render(requset, 'newApp/index.html')

# 在settings.py沒有配置應用名
# 在專案templates檔案下建立與應用名相同的資料夾, 該應用的模板檔案都可以放在該資料夾下
# 檢視處理函式的邏輯一致

# 注: 兩種同時存在是, 專案下templates優先被訪問
複製程式碼

五.靜態檔案載入

  • 靜態檔案的根路由 => 規定了載入靜態檔案的起點
# settings檔案下的
STATIC_URL = '/static/'
# 下方規定靜態檔案可以放入的資料夾
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
    os.path.join(BASE_DIR, 'a'),
    os.path.join(BASE_DIR, 'b'),
]

# 直接導致模板頁面匯入靜態檔案起點:
# <link src="/static/index.css">
複製程式碼

六.GET請求的資料獲取

def login(request):
    if request.method == "GET":
        # 獲得到則返回一個值, 獲取不到返回None
    	request.GET.get('user')
        # 獲得到則返回的多個值
        request.GET.getlist('users')
複製程式碼

七.POST請求的資料獲取

def login(request):
    if request.method == "POST":
        # 獲得到則返回一個值, 獲取不到返回None
    	request.POST.get('user')
        # 獲得到則返回的多個值
        request.POST.getlist('users')
複製程式碼

八.連線資料庫

import pymysql
# 連線資料庫
conn = pymysql.connect(host='localhost', port=3306, user='root', password='root', db='django')
# 設定遊標執行sql語句
cur = conn.cursor(pymysql.cursors.DictCursor)
cur.execute('select * from user')
cur.execute('select * from user where usr=%s and pwd=%s', [usr, pwd])

# 獲取執行結果
users = cur.fetchall() # 所有使用者資料
res = cur.fetchone() # 一條使用者資料
複製程式碼

相關文章