Python學習day13 Django 分頁/Session/Cookie

Created on 2017年5月3日javascript


第1課:上節做業簡介html

鼠標放上表單後進入編輯模式-----需學習----CMDB裏會學到
模態對話框裏--彈出對話框---對後臺進行操做---
方式:
1 Form-用Submit頁面整個刷新
2 用Ajax後臺請求,經過Sessuss方式返回數據來控制模態對話框前端


第2課:本節內容1
第3課:本節內容2java

第4課:django自定義分頁一 28minutes
第5課:django自定義分頁二 35minutesjquery

url(r'^index/(\d*)', views.index),
index/(\d*) 這裏後面不加/能夠沒有參數

後臺返回給前端的HTML,在前端是以字符串方式來顯示,不會直接以HTML在頁面上顯示
from django.utils.safestring import mark_safe
可經過mark_safe('html標籤')
divmod(12,5)

def index(request,page):
try:
page = int(page)
except:
page = 1
per_item = 5
start = (page-1)*per_item
end = page*per_item
count = Asset.objects.all().count()
result = Asset.objects.all()[start:end]

temp = divmod(count, per_item)
if temp[1] == 0 :
all_page_count = temp[0]
else:
all_page_count = temp[0]+1
page_html = "<a href='/app01/index/%d'>首頁</a>"%(1)
for i in range(1,all_page_count+1):
a_html ="<a href='/app01/index/%d'>%d</a>"%(i,i)
page_html += a_html

page_html += "<a href='/app01/index/%d'>尾頁</a>"%(all_page_count)
page = mark_safe(page_html)

ret = {'data':result,'count':count,'page':page}
return render_to_response('app01/index.html', ret)
ajax

第6課:django自定義分頁三 35minutesdjango


第7課 Django自定義分佈四 40minutes瀏覽器

無缺的html分頁代碼:
# -*- coding: utf-8 -*-服務器

from django.utils.safestring import mark_safe
'''
Created on 2017年5月4日
這是一個分頁的模塊,能夠對全部的數據進行分頁
@author: Administrator
'''
#這裏須要提供:當前頁面,每頁數量,顯示的Models
def model(page,per_item,M):
try:
page = int(page)
except:
page = 1
start = (page-1)*per_item
end = page*per_item
count = M.objects.all().count()
result = M.objects.all()[start:end]
temp = divmod(count, per_item)
if temp[1] == 0 :
all_page_count = temp[0]
else:
all_page_count = temp[0]+1
return all_page_count,result,countcookie

#這裏須要提供:當前頁面,總頁數,轉向的URL
def pager(page,all_page_count,url):
try:
page = int(page)
except:
page = 1
#判斷若是頁面是1,則上一頁無,正常上一頁爲當前少1
if page <= 1:
page_html = "<a href='#'>上一頁</a>"
else:
page_html = "<a href='%s/%d'>上一頁</a>"%(url,page-1)
#首頁就是第1頁
page_html += "<a href='%s/%d'>首頁</a>"%(url,1)

#頁面顯示11個頁碼,若是當前頁面少於5,則啓始頁爲1,正常啓始頁爲當前減5
if page-5 <=0:
page_start = 1
page_end = 12
else:
page_start = page-5
if all_page_count-6>=page:
page_end = page+6
else:
page_end = all_page_count

for i in range(page_start,page_end+1):
if page == i:
a_html ="<a class='selected' href='%s/%d'>%d</a>"%(url,i,i)
else:
a_html ="<a href='%s/%d'>%d</a>"%(url,i,i)
page_html += a_html

page_html += "<a href='%s/%d'>尾頁</a>"%(url,all_page_count)
#
if page < all_page_count:
page_html += "<a href='%s/%d'>下一頁</a>"%(url,page+1)
else:
page_html += "<a href='#'>下一頁</a>"
page = mark_safe(page_html)
return page

 

第8課 Session剖析和應用 45minutes
Cookie
存在客戶端的瀏覽器上

Session
存在服務器上,保持會話(如登陸後操做其餘頁面)

-----------------------sesson-----------------------------------------
def index(request):
#這裏判斷是否有Request.sesson值,有就返回正常頁面,無則返回登陸頁面
user_dict = request.session.get('is_login',None)
if user_dict:
return render_to_response('app02/index.html',{'user':user_dict['user']})
else:
return redirect('/app02/login')


def login(request):
ret = {'status':None}
if request.method == 'POST':
username = request.POST.get('username',None)
password = request.POST.get('password',None)
print username,password
if username == 'aaa' and password == '111111':
#這裏給Session設定一個值,若是正常登陸,則爲Ture
# request.session['is_login'] = True
request.session['is_login'] = {'user':username}
ret['status'] = '登陸成功'
return redirect('/app02/index')
else:
ret['status'] = '用戶名或密碼錯誤'
return render_to_response('app02/login.html',ret)

def logout(request):
#刪除sesson裏的值,用del就能夠了
del request.session['is_login']
return redirect('/app02/index')

---------------------------------------------------------------------

request.session 這個信息全部方法均可以使用

request.session['is_login'] = {'user':username}

 

第9課 Django中Session的運行機制 28minutes

session相關參數在Setting中設定

若是用戶端瀏覽器中Cookie禁用了,網站沒法在本地寫入相關數據,則沒法登陸網站

cookiet 和 session的關係:
每一個用戶登陸後會產生一個Cookie,用戶 訪問網站時,帶着這個Cookie的值,網站會保留一個
Session的的Key(Cookie的值),來確認是否爲該用戶。
多個用戶多個Key


第9課 Django的剖析和應用 33minutes

給頁面手工設置Cookie
response = render_to_response('app02/login.html',ret)
response.set_cookie('k1', 'v1')

jquery.cookie.js有Jquery的Cookie操做

Cook順序:
index -----客戶端$(function())-----下拉框選擇-----刷新---返回Index

------------------------------------------------------------------------------------
def user1(request,page):
print request.COOKIES
#後臺顯示cookies,是一個字典,能夠用Key的方式獲得Value
per_item = int(request.COOKIES.get('pager_num',10))
print per_item

 

 

 

第9課 Django的剖析和應用 33minutes
all_page_count,result,count = model(page,per_item,UserInfo)

page = pager(page,all_page_count,'/app01/user1')

ret = {'data':result,'count':count,'page':page}

#return render_to_response('app01/accountinfo.html',ret)

response = render_to_response('app01/accountinfo.html',ret)
#能夠對返回頁面的對象設置Cookie
response.set_cookie('pager_num', per_item)
return response


<script src="/static/jquery/jquery-1.12.4.js" type="text/javascript"></script>
<script src="/static/jquery/jquery.cookie.js" type="text/javascript"></script>
<script type='text/javascript'>
//var temp =$('#id1').html()
//console.log(temp)
//這裏先獲取瀏覽器的Cookie,若是有值,將下拉框的附值
/* */
$(function(){
var per_item = $.cookie('pager_num');
if(per_iterm){
$('#id2').val(value)
}
})


function ChangePageItem(arg){
//這裏arg就是上面this下的值
var value=$(arg).val();
console.log(value)
//建立或修改Cookie值
//設置一個Key爲Pager_num和值,path設置的目錄,根目錄爲全部目錄使用
$.cookie('pager_num',value,{path:'/'});
//$('#id2').val(value)
}
------------------------------------------------------------------------------------

 

 

第10課  Cookie剖析和Cookie的應用

第11課  Django中Cookie的應用

第12課  Django跨站請求僞造一

第13課  Django跨站請求僞造二

第14課  Django中間件的原理和應用一

第15課  Django中間件的原理和應用二

  Django Admin說明

第16課 做業

完善主機管理系統:

登錄註冊(利用ajax實現,使用onblur事件,檢測當前用戶名是否已經存在)
用戶會話保持(Session)
Form驗證用戶輸入
自定義中間件記錄請求IP(或黑名單)
用戶管理、用戶組管理、主機管理(增刪改查,分頁)
自定義頁面表格行數(可選)

經過Cookie更改背景顏色,以主題方式操做

相關文章
相關標籤/搜索