小編這次要給大家分享的是如何運(yùn)用Django ORM filter(),文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
目前創(chuàng)新互聯(lián)已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、寶安網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。最近發(fā)布代碼的時(shí)候,遇到一個(gè)問題,發(fā)現(xiàn)Python中eval()函數(shù)的危險(xiǎn)性.然而我還是個(gè)菜鳥,其中有一段代碼是這樣的。
queryset = eval("models.TUserInfo.objects.filter({0})[{1}:{2}]".format(select,page_num * page - page_num,page_num * page))
代碼場(chǎng)景:
這是一個(gè)獲取信息的API.所以需要去數(shù)據(jù)庫里取對(duì)應(yīng)信息,但是你不知道獲取信息是根據(jù)哪幾個(gè)字段而來,需要靠用戶傳入,在這里eval()函數(shù)就提供給某些人員很好的入侵性.所以用了另外一種方式去改良代碼.
filter(**kwargs): 它包含了與所給篩選條件相匹配的對(duì)象
條件查詢
條件可以是:參數(shù),字典,Q
def filter(self, *args, **kwargs): """ Returns a new QuerySet instance with the args ANDed to the existing set. """ return self._filter_or_exclude(False, *args, **kwargs)