インポートのOS インポートSYS もし __name__ == ' __main__ ' : os.environ.setdefault(" DJANGO_SETTINGS_MODULE "、" ormday71.settings " ) 輸入ジャンゴ django.setup() app01 輸入モデル RET = models.Employee.objects.all()の値(" ID "、" DEPT " ) プリント(RET) django.db.models インポートの平均を RET = models.Employee.objects.values(" DEPT ").annotate(平均=平均(" 給料"))の値(" DEPT "、" 平均" ) 、印刷(RET) #以什么分组#得到的值 RET = models.Employee2.objects.values(" DEPT_ID ").annotate(平均=平均(" 給料"))の値(" dept__name "、" 平均") 印刷(右) #查所有的员工和部门名称 RET = models.Employee2.objects.values(" 名前"、" dept__name " ) プリント(RET) # # RET = models.Employee2.objects.select_related()の値( "名前"、 "dept__name")#1 プリント(RET) ## RET = models.Author.objects.select_related( "books__title")の値( "名前"、 "books__title")#1 プリント(RET) #の印刷( "=" * 120)#RET = models.Author.objects.prefetch_related( "books__title")の値( "名前"、 "books__title") #品質(右) #一括作成 #100本があるオブジェクト [models.Book(タイトル= OBJS = " リバー} { " .format(I))をするための I におけるレンジ(1500 )] #データベースで作成したバッチ、10回提出 models.Book.objects.bulk_create(OBJS、10 ) #models.Book.objects.all()。削除()
django.shortcuts インポートレンダリング #ここにあなたの意見を作成します。 app01 輸入モデル デフ冊(リクエスト): #从URL取参数 PAGE_NUM = request.GET.get(" ページ" ) プリント(PAGE_NUM、タイプ(PAGE_NUM)) #データの総数である TOTAL_COUNT = models.Book.objects.all()。COUNT() #の呼び出しクラス から utils.mypage インポートページ page_obj =ページ(PAGE_NUM、TOTAL_COUNT、PER_PAGE = 10、URL_PREFIX = " /書籍/ "、max_page = 9 、) RET = models.Book.objects.all()[page_obj.start:page_obj.end] page_html = page_obj.page_html() リターンレンダリング(リクエスト、" books.html "、{ " 書籍":RET、" page_html " :page_html}) DEF (リクエスト)DEPTS: #URLパラメータテイクから PAGE_NUM = request.GET.get(" ページ" ) を印刷(タイプ(PAGE_NUM)のPAGE_NUM、) #データの総数は TOTAL_COUNT = models.Dept.objects.all()COUNT。 () から utils.mypage インポートします page_obj =ページ(PAGE_NUM、TOTAL_COUNT、PER_PAGE = 10、URL_PREFIX = " / DEPTS / "、max_page = 11 、) RET = models.Dept.objects.all()[page_obj.start:page_obj.end】 プリント(RET) page_html = page_obj.page_html() リターン(リクエスト、レンダリング" dept.html "、{ " DEPTS ":RET、" page_html ":page_htmlを})
クラスページ(): デフ __init__(自己、PAGE_NUM、TOTAL_COUNT、URL_PREFIX、PER_PAGE = 10、max_page = 11 ): ""」 :PAGE_NUM PARAM:現在のページ番号 :のParam TOTAL_COUNT:データの総数 :のParam URL_PREFIX:HREFタグの接頭辞 :ParamのPER_PAGE:どのように多くの作品ページあたりのデータ :のParam max_pageは:いくつかのフォリオのページまで表示します ""」 self.url_prefix = URL_PREFIX self.max_page = MAX_PAGE #各ページショーどのように多くのデータ #総表示するために必要なページ数 total_pageを、M = divmod(TOTAL_COUNT、PER_PAGE) IF メートル: total_page + = 1 self.total_page = total_page してみてください: PAGE_NUM = INT(PAGE_NUM) #あなたはページ数が最大ページ数、デフォルトの戻りの最後のページを超えて入力した場合 IF PAGE_NUM> total_page: PAGE_NUM = total_page 除く例外としてE: #のページの最初のページのデフォルトの戻りデータ入力数は深刻ではありません 。PAGE_NUM 1 = self.page_num = PAGE_NUM #ここからに運ば二つの変数格納されたデータ定義 ( - 1 PAGE_NUM)* 10 self.data_start = self.data_end = 10 * PAGE_NUMを #ページショーどのように多くの総ページ IF total_page < self.max_page: self.max_page = total_page half_max_page = self.max_page // 2 #はどこ開始するページ番号で表示 PAGE_START = PAGE_NUM - half_max_page #1 ページショーのページどこの端 PAGE_END = PAGE_NUM + half_max_page #現在のページが1より半分だけ小さい場合は IF PAGE_START <= 1 : PAGE_START = 1 PAGE_END = self.max_page #総ページ数の現在のページの半分を加えたよりも大きい場合 IF PAGE_END> = total_page: PAGE_END = total_page PAGE_START = total_page - self.max_page + 1 self.page_start = PAGE_START self.page_end = PAGE_END @property デフ(自己)開始: リターンself.data_start @property デフエンド(自己): 戻りself.data_end DEFのpage_html(セルフ): #独自のスプライシングタブのHTMLコード html_str_list = [] #プラス最初のページ html_str_list.append(" <LI> <a href="{}?page=1">ホーム</a>の< /李> " .format(self.url_prefix)) #自分自身のための裁判官、それが最初のページであれば、何の前には存在しない のIF self.page_num <= 1 : html_str_list.append(' <LIクラス= "無効"> <a href="#"> <スパンARIA-隠さ= "真の">&LAQUO; </ span>にする</a>ます。</ li> ' .format(自己.page_num-1 )) 他: #加一个上一页的标签 html_str_list.append(" <LI> <a href="{}?page={}"> <スパンARIA-隠さ= "真の">&LAQUO。 </スパン> </a>の</ LI> " .format(self.url_prefix、self.page_num-1 )) 以下のための私でレンジ(self.page_start、self.page_end + 1 ): #ページを追加する場合は、現在アクティブなスタイルのクラスである IF I == self.page_num: TMP = ' <LIクラス= "アクティブ"> <a href="{0}?page={1}"> {1} </a>の</ LI> ' .format(self.url_prefix、I) #固定标识、当前页 他: TMP = ' <LI> <a href="{0}?page={1}"> {1} </a>の</ LI> ' .format(self.url_prefix、I) html_str_list.append(TMP) #次のボタンの追加 #のそれは最後のページであれば何も次がない、裁判官を IF self.page_num> = self.total_page: html_str_list.append(' <LIクラス= "無効"> <a href="#"> <スパンARIA-隠さ= "真">表示&raquo; </ span>にする</a>ます。</ li> ' ) それ以外: html_str_list.append(' <LI> <a href="{}?page={}"> <スパンARIA-隠さ= "真">表示&raquo; </ span>にする</a>ます。</ li> ' .format( self.url_prefix、self.page_num + 1 )) #加最后一页 html_str_list.append(' <LI> <a href="{}?page={}">尾页</a>の</ LI> ' 。フォーマット(self.url_prefix、self.total_page)) page_html = "" .join(html_str_list) リターン page_html