Python Django Ajax進階

2022-06-23 16:21:15 字數 3545 閱讀 3887

名字 檔案 

上傳檔案

# ajax檔案上傳

def fileupload(request):

if request.method == 'get':

return render(request, 'fileupload.html')

if request.is_ajax():

name = request.post.get('name')

# 檔案物件

myfile = request.files.get('myfile')

import os

path = os.path.join('media', name)

with open(path, 'wb') as f:

for line in myfile:

f.write(line)

return httpresponse('success')

# 分頁器

from django.core.paginator import paginator

def paging(request):

users = userinfo.objects.all().order_by('pk')

paginator = paginator(users, 20)

try:

currentpage = int(request.get.get('page', 1)) # 預設顯示第一頁

page = paginator.page(currentpage)

except exception as e:

# 出錯時顯示第一頁

currentpage = 1

page = paginator.page(currentpage)

# 傳入頁碼數,拿到的就是當前頁物件

page = paginator.page(currentpage)

# 1 總頁數是否大於11,當總頁碼數大於11

if paginator.num_pages > 11:

# 1.1 當前頁碼數是否小於6

if currentpage <= 6:

# 1.1.1 噹噹前頁碼小於6的時候,就生成11個頁碼數

page_range = range(1, 12)

# 1.2 噹噹前頁碼+5 大於等於總頁碼數

elif currentpage + 5 >= paginator.num_pages:

# 1.2.1 往後推11個頁碼數

page_range = range(paginator.num_pages - 10, paginator.num_pages + 1)

# 1.3 生成一個左5 右5的區間

else:

page_range = range(currentpage - 5, currentpage + 6)

# 2 總頁碼數不大於11 ,有多少,顯示多少

else:

page_range = paginator.page_range

return render(request, 'page.html', locals())

id

name

age

}}}}

}

from django import forms

# 繼承form這個類

class myform(forms.form):

# 限制name這個欄位最長為8,最短為3

name=forms.charfield(min_length=3,max_length=8,label='使用者名稱',required=true,error_messages=)

pwd=forms.charfield(min_length=3,max_length=8,label='密碼',error_messages=)

email=forms.emailfield(label='郵箱',error_messages=)

# ajax register

def register(request):

if request.method == 'get':

myform=myform()

return render(request, 'register.html',locals())

else:

# 生成物件,傳參,傳字典,要校驗資料的字典

# myform=myform(request.post)

# 自己寫要校驗的字典,資料多了,多的是不校驗的,但是cleaned_data中也沒有多出來的資料

# dic=

# dic=

# dic =

name=request.post.get('name')

pwd=request.post.get('pwd')

email=request.post.get('email')

dic =

print(dic)

myform = myform(dic)

# 所有字典都校驗通過,它就是true的

if myform.is_valid():

# 取出校驗通過的資料

clean_data=myform.changed_data

print(clean_data)

# models.userinfo.objects.create(**clean_data)

else:

# 所有的錯誤資訊

# 只要是校驗通過的值,都在cleaned_data中放著

print(myform.changed_data)

print(myform.errors.as_data())

# 字典型別

print(type(myform.errors))

print(myform.errors.get('name'))

from django.forms.utils import errordict

return httpresponse('ok')

1 預設編碼urlencode,後端按照原來form表單提交的形式取值就可以了()

2 上傳檔案,form-data編碼,後端按照原來form表單提交的形式取值就可以了,取資料從post中取,取檔案從files中取

3 上傳json格式,django不會處理資料,需要自己處理,自己從body體中取出資料處理

Python Django Ajax進階3

中介軟體顧名思義,是介於request與response處理之間的一道處理過程,相對比較輕量級,並且在全域性上改變django的輸入與輸出。因為改變的是全域性,所以需要謹慎實用,用不好會影響到效能 1 寫一個類,繼承middlewaremixin, 2 在類中寫方法 process request 3 在...

Django Ajax

json是一種資料交換格式 json是js的一個子集 json裡面只認雙引號 json一定是一個字串 功能 是 js 的一種向後端伺服器傳送...

Ajax django

ajax 目前最常用的就是通過jquery來使用ajax,jquery封裝了ajax views from django shortcuts import render httpresponse render to response create your views here def ajax r...