1.如何創建一個類?
自定義一個類:(https://www.runoob.com/python3/python3-class.html)
__init__(self):
self代表類的實例,而非類
類的方法:在類的內部,使用 def 關鍵字來定義一個方法,與一般函數定義不同,類方法必須包含參數 self, 且為第一個參數,self 代表的是類的實例。
#私有的東西外部不能調用
舉例:
ORM中對於raw-queryset的分頁是不能用分頁器的,所以我們自建一個封裝sql的分頁類,調用即可
# 1.獲取數據庫連接 from django.db import connection class SqlPaginator(object): #python3可以不寫,默認繼承 #實現sql分頁類: def __init__(self, sql, params, page_size): super().__init__() self.sql = sql #要查詢的sql self.params = params #sql查詢時候傳遞的參數 self.page_size = page_size #每頁多少條數據 def page(self, now_page): """ 獲取當前頁: :param now_page: 頁碼 """ offset = (now_page - 1) * self.page_size # 偏移量:每頁的首位置 sql = self.sql + ' limit %s offset %s' #不要漏了sql的空格 # 使用cursor: sql = ('select `id`, `username`, `nickname` from `weibo_user`' 'where `username` = %s' ) # 2。根據連接獲取游標 cursor = connection.cursor() # 3。根據游標執行sql rest = cursor.execute(sql, [self.page_size, offset]) # 4。獲取查詢結果 rows = cursor.fetchall() return rows
以及這個class怎么使用?
還是在ORM中,所以在視圖中調用(此處省略url建立)
def page_p_sql2(request): #使用sql分頁類: from utils.sqlpage import SqlPaginator sql = ('select `id`, `username`, `nickname` from `weibo_user`') sql_params = [] page_size = 10 p = SqlPaginator(sql, sql_params, page_size) #類的實例化 page_data = p.page(5) for row in page_data: print(row) return HttpResponse('ok')
object類是什么?
manager是ORM中進行數據庫查詢操作的接口,每個model都必須擁有一個manager,object是一個默認的manager。自定義的manager也要繼承它。
(https://blog.csdn.net/qq_27828675/article/details/79358893)
在python3不寫會默認調用: