1. 程式人生 > >Django基礎進階

Django基礎進階

讀取 編寫 編寫程序 pen hunk 文件路徑 settings 處理 oct

內容回顧:

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基礎進階