Django小白必會三板斧與基本配置
阿新 • • 發佈:2022-02-24
Django三板斧
① HttpResponse
可以給頁面返回一個字串型別資料
from django.shortcuts import render, HttpResponse, redirect
def register(request): return HttpResponse('註冊成功')
② render
返回一個HTML頁面
from django.shortcuts import render, HttpResponse, redirect
def login(request): return render(request, 'login.html') def login(request): return render(request, 'login.html',local()) # 第三個引數是將該區域性名稱空間的名字都傳給HTML頁面使用 def login(request): a = 1 b = 2 return render(request, 'login.html',{'a':a,'b':b}) # 將字典內的K鍵傳遞給HTML頁面使用
③ redirect
該方法是重定向,可以指定一個網址也可以是本地的
from django.shortcuts import render, HttpResponse, redirect# 重定向到一個網址 def register(request): return redirect('www.baidu.com') # 重定向到本地的頁面 def register(request): return redirect('/login/')
靜態檔案配置
靜態檔案就是一些寫死了的檔案,例如js檔案,css檔案,圖片等
pycahrm建立靜態檔案時不會給我們建立一個存放靜態檔案的資料夾,所以我們一般都需要在專案中建立一個static資料夾,將需要的靜態檔案都放在這個資料夾下
修改配置檔案
STATIC_URL = '/static/' # 這是一個令牌,讀取靜態檔案時需要使用STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # 靜態檔案字典,有幾個靜態資料夾都可以寫在這裡,需要自己手動新增
修改HTML匯入
# 方式一 # /static/ 是令牌,如果令牌修改了這裡的static也要修改 <link rel="stylesheet" href=" /static/bootstrap-3.4.1-dist/css/bootstrap.css'"> <script src= '/static/bootstrap-3.4.1-dist/js/bootstrap.js' ></script> # 方式二 #該方法不需要管令牌是什麼,是動態獲取的 {% load static %} <link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.css' %}"> <script src={% static 'bootstrap-3.4.1-dist/js/bootstrap.js' %}></script>
form表單
<form action=""> ''' 1. 什麼都不寫,提交到當前頁面 2. 全寫:https://passport.baidu.com/v2/api/?login 3. 只寫字尾 /login/ => 自動補全ip和埠 http://127.0.0.1:8000/login/ '''
request方法
""" request.method # 獲取當前頁面的請求方法 request.POST # POST請求的方法 request.GET # GET請求的方法 request.FILES # 獲取檔案資料 request.body request.path request.path_info request.get_full_path() 能過獲取完整的url及問號後面的引數 """ print(request.path) # /app01/ab_file/ print(request.path_info) # /app01/ab_file/ print(request.get_full_path()) # /app01/ab_file/?username=jason
form表單上傳檔案及後端操作
""" form表單上傳檔案型別的資料 1.method必須指定成post 2.enctype必須換成formdata request.FILES request.FILES.get('file') """ def ab_file(request): if request.method == 'POST': # print(request.POST) # 只能獲取普通的簡直對資料 檔案不行 print(request.FILES) # 獲取檔案資料 # <MultiValueDict: {'file': [<InMemoryUploadedFile: u=1288812541,1979816195&fm=26&gp=0.jpg (image/jpeg)>]}> file_obj = request.FILES.get('file') # 檔案物件 print(file_obj.name) with open(file_obj.name,'wb') as f: for line in file_obj.chunks(): # 推薦加上chunks方法 其實跟不加是一樣的都是一行行的讀取 f.write(line) return render(request,'form.html')