最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django之session與分頁(實(shí)例講解)

 更新時(shí)間:2017年11月13日 09:32:18   作者:布吉島丶  
下面小編就為大家?guī)硪黄猟jango之session與分頁(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

前面我們介紹了cookies,主要應(yīng)用在用戶登錄上,保存用戶登錄狀態(tài),不過cookies直接放在了瀏覽器上,安全性較低,所以我們便引出了session功能與cookies相同,不同的是它放在了客戶端,相比較cookies來說安全性更高。還有分頁,這是一個(gè)比較常用的功能。

一、session

1、基本語法:

1、設(shè)置Sessions值
   request.session['session_name'] ="admin"
2、獲取Sessions值
   session_name = request.session["session_name"]
   session_name = request.session.get("session_name")
3、刪除Sessions值
   del request.session["session_name"]
   request.session.flush()
4、檢測(cè)是否操作session值
   if "session_name" is request.session :

2、解析圖

3、實(shí)例

1)views

def login(requset):
 if requset.method=="POST":
  username=requset.POST.get("user")
  password=requset.POST.get("pwd")
  ret=models.UserInfo.objects.filter(username=username,password=password)
  if ret:
   requset.session["IS_LOGON"]=True
   requset.session["USER"]=username

   return redirect("/home/")
  else:
   return redirect("/login/")

 return render(requset,"login.html")

def home(request):
 ret=request.session.get("IS_LOGON",None)

 if ret :
  username=request.session.get("USER")
  return render(request, "home.html",locals())
 else:
  return redirect("/login/")

2)template

<form action="/login/" method="post">
 {% csrf_token %}
 <p>姓名 <input type="text" name="user"></p>
 <p>密碼 <input type="password" name="pwd"></p>
 <input type="submit">
</form>

二、分頁

1、view

from django.shortcuts import render,HttpResponse

# Create your views here.
from app01.models import *
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

def index(request):

 '''
 批量導(dǎo)入數(shù)據(jù):

 Booklist=[]
 for i in range(100):
  Booklist.append(Book(title="book"+str(i),price=30+i*i))
 Book.objects.bulk_create(Booklist)
 '''

 '''
分頁器的使用:

 book_list=Book.objects.all()

 paginator = Paginator(book_list, 10)

 print("count:",paginator.count)   #數(shù)據(jù)總數(shù)
 print("num_pages",paginator.num_pages) #總頁數(shù)
 print("page_range",paginator.page_range) #頁碼的列表



 page1=paginator.page(1) #第1頁的page對(duì)象
 for i in page1:   #遍歷第1頁的所有數(shù)據(jù)對(duì)象
  print(i)

 print(page1.object_list) #第1頁的所有數(shù)據(jù)


 page2=paginator.page(2)

 print(page2.has_next())   #是否有下一頁
 print(page2.next_page_number()) #下一頁的頁碼
 print(page2.has_previous())  #是否有上一頁
 print(page2.previous_page_number()) #上一頁的頁碼



 # 拋錯(cuò)
 #page=paginator.page(12) # error:EmptyPage

 #page=paginator.page("z") # error:PageNotAnInteger

 '''


 book_list=Book.objects.all()

 paginator = Paginator(book_list, 10)
 page = request.GET.get('page',1)
 currentPage=int(page)


 try:
  print(page)
  book_list = paginator.page(page)
 except PageNotAnInteger:
  book_list = paginator.page(1)
 except EmptyPage:
  book_list = paginator.page(paginator.num_pages)


 return render(request,"index.html",{"book_list":book_list,"paginator":paginator,"currentPage":currentPage})

2、templates

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <link rel="stylesheet"  rel="external nofollow" 
 integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>

<div class="container">

 <h4>分頁器</h4>
 <ul>

  {% for book in book_list %}
    <li>{{ book.title }} -----{{ book.price }}</li>
  {% endfor %}

  </ul>


 <ul class="pagination" id="pager">

     {% if book_list.has_previous %}
     <li class="previous"><a href="/index/?page={{ book_list.previous_page_number }}" rel="external nofollow" >上一頁</a></li>
     {% else %}
     <li class="previous disabled"><a href="#" rel="external nofollow" rel="external nofollow" >上一頁</a></li>
     {% endif %}


     {% for num in paginator.page_range %}

      {% if num == currentPage %}
      <li class="item active"><a href="/index/?page={{ num }}" rel="external nofollow" rel="external nofollow" >{{ num }}</a></li>
      {% else %}
      <li class="item"><a href="/index/?page={{ num }}" rel="external nofollow" rel="external nofollow" >{{ num }}</a></li>

      {% endif %}
     {% endfor %}



     {% if book_list.has_next %}
     <li class="next"><a href="/index/?page={{ book_list.next_page_number }}" rel="external nofollow" >下一頁</a></li>
     {% else %}
     <li class="next disabled"><a href="#" rel="external nofollow" rel="external nofollow" >下一頁</a></li>
     {% endif %}

   </ul>
</div>



</body>
</html>

3、擴(kuò)展

def index(request):


 book_list=Book.objects.all()

 paginator = Paginator(book_list, 15)
 page = request.GET.get('page',1)
 currentPage=int(page)

 # 如果頁數(shù)十分多時(shí),換另外一種顯示方式
 if paginator.num_pages>30:

  if currentPage-5<1:
   pageRange=range(1,11)
  elif currentPage+5>paginator.num_pages:
   pageRange=range(currentPage-5,paginator.num_pages+1)

  else:
   pageRange=range(currentPage-5,currentPage+5)

 else:
  pageRange=paginator.page_range


 try:
  print(page)
  book_list = paginator.page(page)
 except PageNotAnInteger:
  book_list = paginator.page(1)
 except EmptyPage:
  book_list = paginator.page(paginator.num_pages)


 return render(request,"index.html",locals())

以上這篇django之session與分頁(實(shí)例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python針對(duì)不同文本長度的處理方案總結(jié)與對(duì)比

    Python針對(duì)不同文本長度的處理方案總結(jié)與對(duì)比

    這篇文章主要為大家詳細(xì)介紹了Python如何針對(duì)不同文本長度的處理方案,結(jié)合層次化編碼和檢索優(yōu)化策略,感興趣的小伙伴可以參考一下
    2025-02-02
  • 解決tensorflow1.x版本加載saver.restore目錄報(bào)錯(cuò)的問題

    解決tensorflow1.x版本加載saver.restore目錄報(bào)錯(cuò)的問題

    今天小編就為大家分享一篇解決tensorflow1.x版本加載saver.restore目錄報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python實(shí)現(xiàn)緩存的兩個(gè)簡單方法

    Python實(shí)現(xiàn)緩存的兩個(gè)簡單方法

    緩存是一種用于提高應(yīng)用程序性能的技術(shù),它通過臨時(shí)存儲(chǔ)程序獲得的結(jié)果,以便在以后需要時(shí)重用它們,本文將學(xué)習(xí)Python中的不同緩存技術(shù),感興趣的可以了解下
    2024-11-11
  • Python JSON格式數(shù)據(jù)的提取和保存的實(shí)現(xiàn)

    Python JSON格式數(shù)據(jù)的提取和保存的實(shí)現(xiàn)

    這篇文章主要介紹了Python JSON格式數(shù)據(jù)的提取和保存的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 把項(xiàng)目從Python2.x移植到Python3.x的經(jīng)驗(yàn)總結(jié)

    把項(xiàng)目從Python2.x移植到Python3.x的經(jīng)驗(yàn)總結(jié)

    這篇文章主要介紹了把項(xiàng)目從Python2.x移植到Python3.x的經(jīng)驗(yàn)總結(jié),包括作者所使用的Jinja2框架中一些需要注意的地方,需要的朋友可以參考下
    2015-04-04
  • 精選39道Python數(shù)據(jù)分析面試題提早備戰(zhàn)金三銀四

    精選39道Python數(shù)據(jù)分析面試題提早備戰(zhàn)金三銀四

    這篇文章主要為大家介紹了39道Python數(shù)據(jù)分析的面試題問答攻略幫助大家提早備戰(zhàn)金三銀四,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多精進(jìn),早日度過寒冬
    2023-12-12
  • 詳解Python中的PyInputPlus模塊

    詳解Python中的PyInputPlus模塊

    這篇文章主要介紹了Python中的PyInputPlus模塊詳解,PyInputPlus包含與input()類似的、用戶多種數(shù)據(jù)(數(shù)字日期、E-mail地址等)的函數(shù),PyInputPlus還包含其他有用的功能,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Selenium使用Chrome模擬手機(jī)瀏覽器方法解析

    Selenium使用Chrome模擬手機(jī)瀏覽器方法解析

    這篇文章主要介紹了Selenium使用Chrome模擬手機(jī)瀏覽器方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python中前綴運(yùn)算符 *和 **的用法示例詳解

    python中前綴運(yùn)算符 *和 **的用法示例詳解

    這篇文章主要介紹了python中前綴運(yùn)算符 *和 **的用法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-05-05
  • NumPy排序的實(shí)現(xiàn)

    NumPy排序的實(shí)現(xiàn)

    這篇文章主要介紹了NumPy排序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01

最新評(píng)論

新建县| 大厂| 共和县| 马山县| 沙湾县| 宿州市| 鄱阳县| 喜德县| 柏乡县| 玉田县| 临夏市| 广宗县| 汉中市| 青海省| 淳安县| 聊城市| 宜兰市| 富平县| 德钦县| 怀集县| 潍坊市| 广德县| 宜宾市| 视频| 莎车县| 靖西县| 滨海县| 沐川县| 锡林郭勒盟| 苗栗市| 汤阴县| 台中县| 垫江县| 泽州县| 木兰县| 宁乡县| 湘潭县| 定边县| 昂仁县| 普兰店市| 厦门市|