ジャンゴの新しい拡張

ページャ

Djangoは、分散処理のために、ときにデータの大量の時間を容易にするために、モジュールをページングを提供します。

最初の使用

手順を使用します

まず、インポート

django.core.paginatorインポートページネータ、EmptyPage、PageNotAnIntegerから

第二に、インスタンス化

ページネータ=ページネータ(<ページ・オブジェクト・リスト> <ページ番号毎のエントリ>)ページネータを生成するには、#オブジェクト

第三に、ページを使用する方法

ページ= paginator.page(<ページ番号>):ディスプレイ対応するページエントリ、ページのクラスを生成します

 アウトライン

そのプロパティとメソッドを持って、ページネータとページクラス:主に提供Djangoの分配モジュールは、2つのクラスを使用しています

ページネータ

このような導入の以下の共通プロパティとメソッド。

まず、メソッドを作成します

ページネータ=ページネータ(<ページ・オブジェクト・リスト> <ページ番号毎のエントリ>)ページネータを生成するには、#オブジェクト

第二に、共通の属性

<ページネータオブジェクト> .count:ページングオブジェクトリストの数

<ページネータオブジェクト> .num_pages:ページ数

 <ページネータオブジェクト> .page_range:ページ範囲

ページ

まず、メソッドを作成します

ページ= <ページネータオブジェクト> .PAGE(<ページ番号>)

第二に、一般的な方法

次のページで.next_page_number()#GETを<ページは、オブジェクト>

<ページは、オブジェクト> .previous_page_number()#取得前のページ番号

次のページであれば、<ページオブジェクト> .has_next()#

<ページオブジェクト> .has_previous()#が前の場合

例としては、次のとおりです:

 景色

django.shortcuts インポートレンダリング
 から django.httpの輸入のHttpResponse
 から app01 輸入モデル
 から django.core.paginator 輸入、ページネータ、EmptyPage PageNotAnInteger 


ここにあなたの意見を作成します。


デフ指数(リクエスト):
    図書 = models.Book.objects.all()
    ページネータ =ページネータ(書籍、8 のtry 
        NUM = INT(request.GET.get(' P '、1 ))
        印刷(paginator.count )
        プリント(paginator.num_pages) 
        プリント(paginator.page_range) 
        ページ= paginator.page(NUM)
     を除く:Eとして例外
        ページ = paginator.page(1 
    page_range = paginator.page_range
     プリント(page.next_page_number()) 
    印刷(page.previous_page_number()) 
    印刷(page.has_next()) 
    印刷(page.has_previous())
    のリターン(要求、レンダリング' index.htmlを' 、地元の人々 ())は


デフ(要求)を追加します。
    図書 = [ ]
     のための範囲(100 ): = models.Book(名前= ' ブック' + STR(I)、価格= 30 + I * I)
        books.append(書籍)
    models.Book.objects.bulk_create(冊)
    のリターンはHttpResponse(' OK '

HTML

<!DOCTYPE HTML> 
<HTML LANG = " EN " > 
<HEAD> 
    <メタ文字コード= " UTF-8 " > 
    <タイトル>タイトル</ TITLE> 
    <リンクのrel = " スタイルシート"のhref = " /静的/ DIST / CSS /bootstrap.css " > 
</ head> 
<body> 
<UL> 
    {ブックページ%}
         <LI> {{book.name}} </ LI> 
    {%ENDFOR%}
 </ UL> 
<NAVアリア-label = "ページナビゲーション >
    <UL クラス = " ページネーション" > 
        {なら page.has_previous%}
             <LI> 
                <a href= "/?p={{ page.previous_page_number }}" aria-label= "  "> 
                    上一页
                 </ A > 
            </ LI> 
        {}
             <LIのクラス = " 無効" > 
                <ARIAラベル= "" >
                    上一页
                する</a> 
            </ LI> 
        {%ENDIF%} 
        { I  page_rangeの%} 
            {であれば、私== NUM%}
                 <LIのクラス = " アクティブ" > <A HREF = " /?p = {{I}} " > {{I}} </a>の</ LI> 
            {}
                 <LI> <a href=" /?p={{ I }} "> {{I}} < / A> </ LI>
            {%ENDIF%}
        {%ENDFOR%} 
    {なら page.has_next%が}
         <LI> 
            <a href= "/?p={{ page.next_page_number }}" aria-label= " 次へ "> 
                下一页
             </a>の
        </ LI> 
        {}
         <LIのクラス = " 無効" > 
            <a href= "#" aria-label= " 次へ ">
                次のページ
             </a>の
        </ LI> 
    {%ENDIF%} 
{         <LI>#} 
        {             <a href="/?p={{ page.next_page_number }}" aria-label="Next">#} 
        {                 下一页#} 
        {             </a>の#} 
        {         </ LI>#} 
    </ UL> 
</ NAV> 
</ body> 
</ HTML>

 

認証システム----クッキーとセッション

前叙

淘宝網は、記録Aのショッピングを見て、「ショッピングカート」になりますときにログインします。Bは自分のレコードを表示、ログインします。スマートサーバは、ユーザを識別し、覚えておくことができるように思われる、ユーザーが対応するデータを返し、ユーザー名とパスワードを接続するたびに入力する必要はありません。しかし、HTTPのプロトコルはステートレスなプロトコルである、それはユーザーに関する情報を保存することはできません。そして、上記の淘宝網の着陸を達成する方法ですか?クッキーとセッションこれには二つのことが必要です。

クッキー

クッキーとは何ですか?これは、クライアントのブラウザ収納容器です。何を保存しますか?ログインページにユーザー名とパスワードを入力すると、[送信]をクリックして、過去にサーバー認証をクッキーになります。確認した場合、サーバはキーと値のペアを返し、鍵は、セッションIDであり、その値はランダムに生成された文字列の文字列です。そして、クライアントのブラウザにこの鍵ペアは、クライアントのブラウザはクッキーを保存するには、このキーを置きます。次回は、サーバー、クッキーと、アクセスにアクセスします。クッキーサーバを検証します。ログイン情報を入れてクッキーに加え、あなたはまた、処理のためにサーバーに他の個人情報を置くことができます。

セッション

セッションとは何ですか?実際には、コンテナのサーバー側に保存されている、これはそれを格納何ですか?クッキーは、ブラウザがサーバーがクライアントに返されたキーと値のペアによって生成されたかどうかを確認するために、ユーザー名とパスワードを送信し、上記と言われています。しかし、クッキーとブラウザ上の第二の時間は、サーバが検証する方法ですか?実際には、最初の上陸は、サーバがセッションに保存されたクッキーのランダムな文字列を生成します。このように、将来のブラウザアクセスは、あなたがセッションIDクッキーのブラウザとのセッションでキーの値を入れることができたときに、検証のために、と比較するために持って来ら。このセッションでは、フィールドがSESSION_ID、session_data、有効期限が含まれている、django_sessionのデフォルトのデータベースに開催されます。

注意:同じサーバーの場合、同じブラウザは情報のみユーザーが保存されます。これはクッキーの使用上のウェブサイトに移動します。

一般的な認証プロセス

 

 

ログアウト

償却は、非常に単純で、それをクリアし、テーブルdjango_sessionセッション内のレコードデータにあります。次の文を実現することができます。

request.session.flush()

おすすめ

転載: www.cnblogs.com/Treelight/p/12113809.html