欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

djano一對(duì)一、多對(duì)多、分頁(yè)實(shí)例代碼

 更新時(shí)間:2019年08月16日 08:24:37   作者:蝸牛少少  
在本篇文章里小編給大家整理的是關(guān)于djano一對(duì)一,多對(duì)多,分頁(yè)實(shí)例代碼以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。

昨日內(nèi)容:

ORM高級(jí)查詢

-filter
id=3
id__gt=3
id__lt=3
id__lte=3
id__gte=3

-in /not in
.filter(id__in=[]) in
.exclude(id__in=[]) not in

-between......and
.filter(id__range=[])

-like
.filter(name__startswith='XX') like 'XX%'
.filter(name_istartswith='XX') #忽略大小寫(xiě)
.filter(name__endswith='XX') like'%XX'
.filter(name__contains='XX') like'%XX%'
.filter(name_regax='^XX$') like'%XX%'精準(zhǔn)匹配

-or
from django.db.models import Q
Q和|連用為or
&為and


-order by
models.UserInfo.objects.all().order_by('id')#升序#('-id')則為降序
#若有2個(gè)值,則第一個(gè)先排序,第二個(gè)后排序

-group by
from django.db.models import Sum,Count,Min,Max
models.UserInfo.objects.values('name').annota1te(xx=Sum('age'))
models.UserInfo.objects.values('name').annota1te(xx=Sum('age')).filter(XX__gt=50)#二次篩選

-count
models.UserInfo.objects.count()

-limit分頁(yè)
models.UserInfo.objects.all()[X,XX]#利用切分來(lái)分頁(yè)

-distinct
models.UserInfo.objects.values('XX').distinct()

-原生SQL
from django.db import connection

-first
-last兩個(gè)返回的都是對(duì)象
​
-only
返回值為列表里面套對(duì)象

-defer
除了某一列以外的其他對(duì)象,返回值為列表套對(duì)象、

-F
拿到某一列的值,但是只能進(jìn)行數(shù)組操作

XSS -跨腳本(js)攻擊

原因: 服務(wù)端太相信客戶端傳過(guò)來(lái)的參數(shù)

防止: 對(duì)客戶端傳過(guò)來(lái)的數(shù)據(jù)統(tǒng)一進(jìn)行轉(zhuǎn)譯

django中自帶轉(zhuǎn)譯 ​ 消除django中的轉(zhuǎn)譯 {{name|safe}} safe為相信

今日內(nèi)容:

一對(duì)一

母表:userinfo

id name age
1 zekai 18
2 lxxx 58

private:
id salary sp_id(外鍵+unique)
1 5000 1
2 4000 2

一對(duì)一

OneToOneField("表名",null=True)默認(rèn)要求該字段必須是唯一的unique外鍵關(guān)系

#從母表查詢子表的數(shù)據(jù)

查詢一下name='zekai'的這條數(shù)據(jù)

res = models.UserInfo.objects.filter(name='zekai').first()


print(res.private.salary)


#res.子表表名小寫(xiě).子表字段名

#從字表查詢母表中的數(shù)據(jù)

查詢salary=5000的這個(gè)數(shù)據(jù)所對(duì)應(yīng)的用戶的信息

res= models.Private.objects.filter(salary=5000).first()
print(res.sp.name,res.sp.age)
#res.關(guān)聯(lián)的字段名.母表字段名

多對(duì)多

相親模型

boy:
id name
1 laowang
2 XXX

girl:
id name
1 正正
2 連連
3 愛(ài)愛(ài)
4 鳳姐
5 喬碧蘿

boy2girl
id bid gid
1 1 1
2 1 2 
3 1 3
4 2 2
5 2 4
6 2 5

models.py:
class Boy(models.Model):
bname=models.CharField(max_length=32,null=True)
​
class Girl(models.Model):
gname=models.CharField(max_length=32,null=True)
​
class Boy2Girl(models.Model):
b = models.ForeignKey("Boy",null=True)
g = models.ForeignKey("Girl",null=True)
​
​
#聯(lián)合唯一索引
class Meta:
unique_together=[
('b','g')
]


views.py:
def test1(rsquest):
boyinfo= [
models.Boy(bname='雷俊'),
models.Boy(bname='雷鳴'),
models.Boy(bname='雷公'),
models.Boy(bname='雷軍'),
models.Boy(bname='雷峰'),
​
]
​
girlinfo=[
models.Girl(gname='真真'),
models.Girl(gname='天天'),
models.Girl(gname='愛(ài)愛(ài)'),
models.Girl(gname='鳳姐'),
models.Girl(gname='喬碧蘿'),
​
]
models.Girl.objects.bulk_create(boyinfo)
​
b2ginfo=[
models.Boy2Girl(b_id=1,g_id=1),
models.Boy2Girl(b_id=2, g_id=4),
models.Boy2Girl(b_id=3, g_id=3),
models.Boy2Girl(b_id=4, g_id=5),
models.Boy2Girl(b_id=5, g_id=2),
models.Boy2Girl(b_id=3, g_id=5),
models.Boy2Girl(b_id=5, g_id=4),
]
​
​
​
return HttpResponse('ok')
查詢:需求,查找和雷俊約會(huì)的姑娘
res = models.Boy2Girl.objects.filter(bname='雷俊').first()
love_list = res.boy2girl_set.all()
for love in love_list:
print(love.g.name)
​

res = models.Boy2Girl.objects.filter(b__bname='雷俊') #[obj,obj...]
for love in res:
print(res.g.name)

res = models.Boy2Girl.objects.filter(b__bname='雷俊').values('g__gname')
print(res) # [{},{}...]
​

第一種方式:手動(dòng)創(chuàng)建第三張表

models.py
views.py

第二種方式:manytomanyfield

models.py
view.py

區(qū)別:

第一種方式比較靈活

第二種方式比較死板但是如果將來(lái)業(yè)務(wù)擴(kuò)展的時(shí)候,就需要重新打破重來(lái)

因此推薦使用第一種,自定義創(chuàng)建第三張表

表中數(shù)據(jù)類型

-mysql

-django admin

  mysql django
數(shù)字 tinyint 不存在
  smallint SmallInterField
  mediumint 不存在
  int integerFieled/PositiveIntegerField
  bignt BigInterField/PositiveBigIntegerField
  decimal DecimalField
  float FloatField
  double 不存在

  mysql django
字符串 char 不存在
  varchar CharField
  text TextField
時(shí)間日期 date DateField
  datetime DatetimeField
     

參數(shù):

null 數(shù)據(jù)庫(kù)中字符段是否為空

db_column:數(shù)據(jù)庫(kù)中字段的列名

default:數(shù)據(jù)庫(kù)中字段的默認(rèn)值

primary_key:字段是否為主鍵

unique_together :聯(lián)合唯一索引

index_together:聯(lián)合索引

db_index:數(shù)據(jù)庫(kù)中字段是否可以建立索引

unique:數(shù)據(jù)庫(kù)中字段是否可以建立唯一索引

分頁(yè)

-內(nèi)置分頁(yè)

from django.core.paginator import Paginator
  #per_page:每頁(yè)顯示條目數(shù)量
  #count:數(shù)據(jù)總個(gè)數(shù)
  #num_pages:總頁(yè)數(shù)
  #page_range:總頁(yè)數(shù)的索引范圍
  #page:page對(duì)象
  paginator = Paginator(userlist,10)
  
  #has_next:是否有下一頁(yè)
  #next_page_number:下一頁(yè)頁(yè)碼
  #has_previous:是否有上一頁(yè)
  #previous_page_number:上一頁(yè)頁(yè)碼
  #object_list:分頁(yè)之后的數(shù)據(jù)列表
  #number:當(dāng)前頁(yè)
  #paginator:paginator對(duì)象
  sers = paginator.page(cur_page)
  
  return render(request,'index.html',{"users":users})
​
-自定制分頁(yè)

class PageInfo():
  def __init__(self, cur_page, total, per_page=10, show_page=11):
    self.cur_page = cur_page
    self.per_page = per_page
    self.total = total
    self.show_page = show_page
​
    a, b = divmod(self.total, self.per_page)
    if b:
      a = a + 1
    self.total_page = a  #### 總頁(yè)數(shù)
​
  #### 獲取起始索引
  def get_start(self):
    start = (self.cur_page - 1) * self.per_page
    return start
  #### 獲取結(jié)束索引
  def get_end(self):
    return self.cur_page * self.per_page
​
  def get_page(self):
​
    half = (self.show_page - 1) // 2
​
    #### taotal_page = 5 < show_page = 11
    if self.total_page < self.show_page:
      begin = 1
      end = self.total_page
    else:
      #### 左邊極值判斷
      if self.cur_page - half <= 0 :
        begin = 1
        # end = self.cur_page + half
        end = self.show_page
      #### 右邊極值的判斷
      elif self.cur_page + half > self.total_page:
        # begin = self.cur_page - half
        begin = self.total_page - self.show_page + 1
        end = self.total_page  ### 31
      #### 正常頁(yè)碼判斷
      else:
        begin = self.cur_page - half
        end = self.cur_page + half
​
    page_list = []
    if self.cur_page == 1:
      astr = "<li><a href='#' aria-label='Previous'><span aria-hidden='true'>&laquo;</span></a></li>"
    else:
      astr = "<li><a href='/custom/?cur_page=%s' aria-label='Previous'><span aria-hidden='true'>&laquo;</span></a></li>" % (self.cur_page-1)
    page_list.append(astr)
​
    for i in range(begin, end + 1):
      if self.cur_page == i:
        # astr = "<a style='display:inline-block; padding:5px;margin:5px;background-color:red;' href='/custom/?cur_page=%s'>%s</a>" % (i, i)
        astr = "<li class='active'><a href='/custom/?cur_page=%s'>%s</a></li>" % (i, i)
      else:
        # astr = "<a style='display:inline-block; padding:5px;margin:5px' href='/custom/?cur_page=%s'>%s</a>" % (i, i)
        astr = "<li><a href='/custom/?cur_page=%s'>%s</a></li>" % (i, i)
      page_list.append(astr)
​
    if self.cur_page == self.total_page:
      astr = "<li><a href='#' aria-label='Next'><span aria-hidden='true'>&raquo;</span></a></li>"
    else:
      astr = "<li><a href='/custom/?cur_page=%s' aria-label='Next'><span aria-hidden='true'>&raquo;</span></a></li>" % (self.cur_page+1)
    page_list.append(astr)
​
    s = " ".join(page_list)
​
    return s
​
def custom(request):
​
  cur_page = request.GET.get('cur_page')
  cur_page = int(cur_page)
​
  '''
  mysql:
    seelct * from userinfo limit 0, 10 
    seelct * from userinfo limit 10, 10 
    
    cur_page  start  show_page
     1     0   10
     2     10  10
     3     20  10
     n     (n-1)*10, 10
  limit (cur_page - 1) * show_page 
  '''
  # total = models.UserInfo.objects.count()
  total = models.UserInfo.objects.filter(id__lte=44).count()
  page = PageInfo(cur_page, total)
  start = page.get_start()
  end = page.get_end()
​
  ### cur_page = 1  start = 0  end = 10
  ### cur_page = 2  start = 10 end = 20
  ### cur_page = 3  start =20 end = 30
  # user_list = models.UserInfo.objects.all()[start:end]
  user_list = models.UserInfo.objects.filter(id__lte=44)[start:end]
​
​
  return render(request, "custom.html", {"user_list":user_list, "page":page})

安全攻擊

  • -XSS
  • -csrf
  • -sql注入

以上就是本次介紹的全部相關(guān)知識(shí)點(diǎn),感謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • django有外鍵關(guān)系的兩張表如何相互查找

    django有外鍵關(guān)系的兩張表如何相互查找

    這篇文章主要介紹了django有外鍵關(guān)系的兩張表如何相互查找,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 基python實(shí)現(xiàn)多線程網(wǎng)頁(yè)爬蟲(chóng)

    基python實(shí)現(xiàn)多線程網(wǎng)頁(yè)爬蟲(chóng)

    python是支持多線程的, 主要是通過(guò)thread和threading這兩個(gè)模塊來(lái)實(shí)現(xiàn)的,本文主要給大家分享python實(shí)現(xiàn)多線程網(wǎng)頁(yè)爬蟲(chóng),需要的朋友可以參考下
    2015-09-09
  • Pycharm遠(yuǎn)程連接服務(wù)器并運(yùn)行與調(diào)試

    Pycharm遠(yuǎn)程連接服務(wù)器并運(yùn)行與調(diào)試

    本篇文章介紹一下 Pycharm 如何配置遠(yuǎn)程連接信息,使其能夠在本地使用服務(wù)器上的GPU等硬件資源,并在本地完成代碼的運(yùn)行與調(diào)試,感興趣的可以了解一下
    2021-08-08
  • python虛擬機(jī)之描述器實(shí)現(xiàn)原理與源碼分析

    python虛擬機(jī)之描述器實(shí)現(xiàn)原理與源碼分析

    在本篇文章當(dāng)中主要給大家介紹描述器背后的實(shí)現(xiàn)原理,通過(guò)分析?cpython對(duì)應(yīng)的源代碼了解與描述器相關(guān)的字節(jié)碼的指令,我們就可以真正了解到描述器背后的原理,需要的朋友可以參考下
    2023-05-05
  • python2 與 python3 實(shí)現(xiàn)共存的方法

    python2 與 python3 實(shí)現(xiàn)共存的方法

    這篇文章主要介紹了python2 與 python3 實(shí)現(xiàn)共存的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • 安裝Anaconda3及使用Jupyter的方法

    安裝Anaconda3及使用Jupyter的方法

    這篇文章主要介紹了安裝Anaconda3及使用Jupyter的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • PyQt5每天必學(xué)之QSplitter實(shí)現(xiàn)窗口分隔

    PyQt5每天必學(xué)之QSplitter實(shí)現(xiàn)窗口分隔

    這篇文章主要介紹了PyQt5每天必學(xué)之窗口分隔,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python Charles抓包配置實(shí)現(xiàn)流程圖解

    Python Charles抓包配置實(shí)現(xiàn)流程圖解

    這篇文章主要介紹了Python Charles抓包實(shí)現(xiàn)流程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • python列表切片和嵌套列表取值操作詳解

    python列表切片和嵌套列表取值操作詳解

    今天小編就為大家分享一篇python列表切片和嵌套列表取值操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python+matplotlib實(shí)現(xiàn)折線圖的美化

    Python+matplotlib實(shí)現(xiàn)折線圖的美化

    這篇文章主要和大家分享一個(gè)非常有趣的Python教程—如何美化一個(gè)?matplotlib折線圖。文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-05-05

最新評(píng)論