Django基礎進階
內容回顧:
1、Django請求生命周期
路由(URL) 視圖 (VIEW) 數據庫(MODEL)
用戶請求 模板文件(TEMPLATES)
靜態文件(STATIC)
返回字符串給客戶端
--- URL對應關系(匹配) --- 視圖函數--->返回用戶字符串
--- URL對應關系(匹配) --- 視圖函數--->打開一個HTML文件,讀取內容
2、創建django project
django-admin startproect mysite
cd mysite
python manage.py startapp cmdb
...
mysite
mysite
--配置文件
--url.py
--settings.py
cmdb
--views.py
--admin.py
--models.py #創建數據庫表
3、配置
模板路徑
靜態文件路徑
#CSRF
4、編寫程序
a. url.py
/index/ -> func
b.view.py
def func(request):
#包含所有的請求數據
....
return HttpResponse(‘字符串‘)
return render(request,‘index.html‘,{‘‘})
return redirect(‘URL‘)
c、模板語言
{% for item in %}
<h1>{{item}}</h1>
{% endfor %}
****************索引用點來取數****************
<h2>{{item.0}}</h2>
一、路由系統(URL)
1、兩種提交方式:
GET:獲取數據
POST:提交數據
插入知識點:
當表單要上傳文件時,則須要<form>標簽中添加 enctype="multipart/form-data" 語句
這時,djaingo會認為提交的數據將按文件處理。
二、視圖
request.GET
request.POST
request.FILES
#checkbox等多選的內容
request.POST.getlist()
#上傳文件
obj = request.FILES.get(‘filename‘)
obj.name
f = open(obj.name,mode=‘wb‘)
for item in obj.chunks():
f.write(item)
f.close()
註:上傳文件,須對表單(form)聲明:enctype="multipart/form-data"
表單處理
HTML文件:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/login/" method="post" enctype="multipart/form-data"> <p> <input type="text" name="user" placeholder="用戶名"> </p> <p> <input type="password" name="pwd" placeholder="密碼"> </p> <p> 男:<input type="radio" name="gender" placeholder="性別" value="1"> 女:<input type="radio" name="gender" placeholder="性別" value="0"> </p> <p> 男:<input type="checkbox" name="favour" placeholder="愛好" value="1"> 女:<input type="checkbox" name="favour" placeholder="愛好" value="0"> </p> <p> <select name="city"> <option value="sh">上海</option> <option value="bj">北京</option> <option value="tj">天津</option> </select> </p> <p> <select name="city" multiple> <option value="sh">上海</option> <option value="bj">北京</option> <option value="tj">天津</option> </select> </p> <p> <input type="file" name="filename" > </p> <p> <input type="submit" value="提交"> </p> </form> </body> </html>
VIEWS文件
from django.shortcuts import render,redirect from django.shortcuts import HttpResponse import os # Create your views here. def index(request): return HttpResponse(‘Index‘) def login(request): if request.method=="GET": return render(request,‘login.html‘) elif request.method=="POST": u=request.POST.get(‘user‘) p=request.POST.get(‘pwd‘) g=request.POST.get(‘gender‘) print(g) f= request.POST.getlist("favour") print(f) file=request.POST.get(‘filename‘) #其實已上傳到了request.FILES print(file) obj=request.FILES.get("filename") print(obj,type(obj),obj.name) file_path=os.path.join(‘upload‘,obj.name) f =open(file_path,mode=‘wb‘) for i in obj.chunks(): f.write(i) f.close() if u==‘xkj‘ and p=="123": return redirect(‘/index/‘) else: return render(request, ‘login.html‘) else: return redirect(‘/index/‘)
4、FBV (function base view) & CBV (function class view)
url.py
index --->函數名
view.py
def 函數(request):
....
/index/--> 函數名
/index/-->類名
三、模板
四、ORM操作
Django基礎進階