Day2-課堂筆記-Django2

1.model.py創(chuàng)建學(xué)生類student

from datetime import datetime

from django.db import models


class Student(models.Model):
    # def __init__(self, name, age=None, sex=None):
    #     super().__init__()
    #     self.s_name=name
    #     self.s_age=age if age else self.s_age
    #     self.s_sex=sex if sex else self.s_sex
    #     # 創(chuàng)建時(shí)間
    #     self.creat_time=datetime.now()
    #     self.operate_time=datetime.now()
    #自增字段
    # s_id=models.AutoField()
    #字符串
    s_name=models.CharField(max_length=10,unique=True,verbose_name='姓名')
    # int類型
    s_age=models.IntegerField(default=16,verbose_name='年齡')
    #布爾類型
    s_sex=models.BooleanField(default=1,verbose_name='性別')
    #創(chuàng)建時(shí)間,用于第一次時(shí)間的創(chuàng)建
    creat_time=models.DateTimeField(auto_now_add=True,verbose_name='創(chuàng)建時(shí)間')
    #修改時(shí)間
    operate_time=models.DateTimeField(auto_now=True,verbose_name='修改時(shí)間')
    #小數(shù)燎字,精確整數(shù)和小數(shù)位數(shù)
    #EmailField()
    # 圖片
    # ImageField
    # 在數(shù)據(jù)庫(kù)中改變字段名字
    # db_column
    #s_name=models.CharField(db_column=''xxx',max_length=10,unique=True,verbose_name='姓名')
    class Meta:
        db_table='student'

2.對(duì)數(shù)據(jù)進(jìn)行處理

1)增加學(xué)生

方法1:
Student.objects.create()
方法二:
stu=Student()
stu.s_name='xxx'
stu.save()
方法三:
stu=Student(x1,x2,...)
stu.save()

2)查詢學(xué)生

  • all :查詢所有數(shù)據(jù)
  • filter:獲取的結(jié)果為queryset(查詢集)硬贯,結(jié)果可以返回空收捣,一個(gè)或多個(gè)對(duì)象
  • get() 獲取的結(jié)果為object(單個(gè))對(duì)象,如果沒有滿足條件的對(duì)象獲取會(huì)報(bào)錯(cuò)臭埋,獲取的對(duì)象超過一個(gè)也會(huì)報(bào)錯(cuò)
  • 注意:get()能不用就不用,最后就不要用
  • exclude :不包含 獲取不包含該對(duì)象以外的所有對(duì)象
  • order_by :排序 +:升序 -:降序
  • values-->獲取單個(gè)字段
  • first:獲取queryset(查詢集)中的第一個(gè)對(duì)象
  • last:獲取queryset(查詢集)中的最后一個(gè)對(duì)象
  • 切片--->前面那個(gè)下標(biāo)要考慮取值范圍臀玄,后面那個(gè)不用
  • 模糊查詢:contains==>'%x%' startswith==>'x%' endswith==>'%x'
  • isnull/isnotnull 判斷是否為空/是否不為空
  • in 判斷在范圍之內(nèi)
  • pk:與id功能相同
  • 比較運(yùn)算:gt(大于) gte(大于等于) lt(小于) lte(小于等于)
  • 邏輯運(yùn)算:Q(條件) | Q(條件) 邏輯或 ;Q(條件) & Q(條件) 邏輯與 ;~Q(條件) 邏輯非

3)修改學(xué)生

方法一:
stu=Student.objects.get(條件)
stu.字段=修改值
stu.save()
方法二:
Student.objects.filter(條件).update(修改字段=修改值)

4)刪除學(xué)生

stu=Student.objects.get(條件)
stu = Student.objects.filter(條件).first()
stu.delete()

from django.db.models import Q
from django.http import HttpResponse
from django.shortcuts import render

from app.models import Student


def create_stu(request):
    # 創(chuàng)建學(xué)生信息
    # 引入ORM概念:對(duì)象關(guān)系映射 insert into student value()
    # 第一種
    # Student.objects.create(s_name='小王')
    # 第二種
    # stu=Student()
    # stu.s_name='小坑'
    # stu.save()
    # 第三種(盡量少用斋泄,問題很多)
    # stu=Student('小菜',20,0)
    # stu.save()
    return HttpResponse('創(chuàng)建學(xué)生方法')


def select_stu(request):
    '''
    查詢數(shù)據(jù)
    all :查詢所有數(shù)據(jù)
    filter:獲取的結(jié)果為queryset(查詢集),結(jié)果可以返回空镐牺,一個(gè)或多個(gè)對(duì)象
    get() 獲取的結(jié)果為object(單個(gè))對(duì)象炫掐,如果沒有滿足條件的對(duì)象獲取會(huì)報(bào)錯(cuò),獲取的對(duì)象超過一個(gè)也會(huì)報(bào)錯(cuò)
    注意:get()能不用就不用睬涧,最后就不要用
    exclude :不包含    獲取不包含該對(duì)象以外的所有對(duì)象
    order_by :排序  +:升序   -:降序
    values-->獲取單個(gè)字段
    first:獲取queryset(查詢集)中的第一個(gè)對(duì)象
    last:獲取queryset(查詢集)中的最后一個(gè)對(duì)象
    切片--->前面那個(gè)下標(biāo)要考慮取值范圍募胃,后面那個(gè)不用
    模糊查詢:contains==>'%x%'    startswith==>'x%'   endswith==>'%x'
    isnull/isnotnull 判斷是否為空/是否不為空
    in  判斷在范圍之內(nèi)
    pk:與id功能相同
    比較運(yùn)算:gt(大于) gte(大于等于) lt(小于) lte(小于等于)
    邏輯運(yùn)算:Q(條件) | Q(條件) 邏輯或 ;Q(條件) & Q(條件) 邏輯與  ;~Q(條件) 邏輯非


    '''

    # all :所有
    # select * from student;
    # stus=Student.objects.all()

    # filter:獲取的結(jié)果為queryset,可以返回空畦浓,一條或多條
    # select * from student where s_name='小李'
    # stus=Student.objects.filter(s_name='小李')
    # 查詢年齡等于16痹束,年齡不存在時(shí),結(jié)果空
    # stus=Student.objects.filter(s_age=16)

    # get() 獲取的結(jié)果為object對(duì)象讶请,獲取不成功會(huì)報(bào)錯(cuò)祷嘶,結(jié)果超過一條也會(huì)報(bào)錯(cuò)
    # 獲取年齡等于20的學(xué)生,獲取對(duì)象時(shí)夺溢,如果滿足的對(duì)象超過一個(gè)會(huì)報(bào)錯(cuò)
    # stus=Student.objects.get(s_age=18)
    # stus=Student.objects.get(id=100)

    # 查詢多條
    # stus=Student.objects.filter(s_age=16).filter(s_name='小李')
    # stus=Student.objects.filter(s_age=16,s_name='小李')


    # exclude :不包含
    # 查詢姓名不等于小紅的學(xué)生信息
    # stus=Student.objects.exclude(s_name='小李')

    # order_by :排序  +:升序   -:降序
    #排序论巍,安照id升序/降序===>asc/desc
    # stus=Student.objects.all().order_by('id')
    # stus = Student.objects.all().order_by('-id')

    # values-->獲取單個(gè)字段
    # stus=Student.objects.all().values('id')
    # return HttpResponse(stus)

    # get(),first()-->獲取單個(gè)對(duì)象
    # stus=Student.objects.get(id=2)
    # stus=Student.objects.filter(id=100).first()
    # return HttpResponse(stus)

    #first(),last()-->獲取單個(gè)對(duì)象
    # stus=Student.objects.all().order_by('id').last()
    # stus = Student.objects.all().order_by('-id').first()
    # stus = Student.objects.all().order_by('-id')[0]
    # return HttpResponse(stus.id)

    # 切片--->前面那個(gè)下標(biāo)要考慮取值范圍,后面那個(gè)不用
    # stus = Student.objects.all().order_by('-id')[:100]

    # 模糊查詢
    # select * from student name like '%李%'
    # stus=Student.objects.filter(s_name__contains='哈')
    # select * from student name like '小%'
    # stus = Student.objects.filter(s_name__startswith='小')
    # select * from student name like '%王'
    # stus = Student.objects.filter(s_name__endswith='王')

    #isnull/isnotnull判斷是否為空
    # stus = Student.objects.filter(s_name__isnull=False)
    # stus = Student.objects.filter(s_name__isnotnull=False)

    # in  判斷在范圍之內(nèi)
    # stus=Student.objects.filter(id__in=[1,2,6])

    # 年齡大于16
    # stus = Student.objects.filter(s_age__gt=16)


    #pk
    # stus = Student.objects.filter(id=3)
    # stus=Student.objects.filter(pk=3)

    # Q(),查詢姓名叫小花的风响,或者年齡為18
    # stus=Student.objects.filter(Q(s_name='小李') | Q(s_age=20))
    # stus = Student.objects.filter(Q(s_name='小李') & Q(s_age=20))
    # 查詢姓名不叫小花的嘉汰,或者年齡為18
    # stus = Student.objects.filter(~Q(s_name='小李') | Q(s_age=20))

    # 獲取學(xué)生姓名
    # 方法一
    # for stu in stus:
    #     print(stu.s_name)
    # 方法二
    # stu_names=[stu.s_name for stu in stus]
    # print(stu_names)
    # return HttpResponse(stu_names)
def delete_stu(request):
    #刪除
    stu=Student.objects.get(pk=1)
    stu = Student.objects.filter(pk=1).first()
    stu.delete()
    return HttpResponse('刪除')
def update_stu(request):
    #更新
    # 方法一
    stu=Student.objects.get(pk=3)
    stu.s_name='小將'
    stu.save()
    # 方法二
    Student.objects.filter(id=2).update(s_name='哈哈')
    return  HttpResponse('修改')

3.urls.py設(shè)置url

from django.conf.urls import url
from django.contrib import admin
from app import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url('create_stu/',views.create_stu),
    url('select_stu/',views.select_stu),
    url('delete_stu/',views.delete_stu),
    url('update_stu/',views.update_stu),
]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市状勤,隨后出現(xiàn)的幾起案子鞋怀,更是在濱河造成了極大的恐慌,老刑警劉巖持搜,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件密似,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡葫盼,警方通過查閱死者的電腦和手機(jī)残腌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人废累,你說我怎么就攤上這事邓梅。” “怎么了邑滨?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵日缨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我掖看,道長(zhǎng)匣距,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任哎壳,我火速辦了婚禮毅待,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘归榕。我一直安慰自己尸红,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布刹泄。 她就那樣靜靜地躺著外里,像睡著了一般。 火紅的嫁衣襯著肌膚如雪特石。 梳的紋絲不亂的頭發(fā)上盅蝗,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音姆蘸,去河邊找鬼墩莫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛逞敷,可吹牛的內(nèi)容都是我干的狂秦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼兰粉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼故痊!你這毒婦竟也來了顶瞳?” 一聲冷哼從身側(cè)響起玖姑,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎慨菱,沒想到半個(gè)月后焰络,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡符喝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年闪彼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡畏腕,死狀恐怖缴川,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情描馅,我是刑警寧澤把夸,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站铭污,受9級(jí)特大地震影響恋日,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嘹狞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一岂膳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧磅网,春花似錦谈截、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至嫂丙,卻和暖如春娘赴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背跟啤。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工诽表, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人隅肥。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓竿奏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親腥放。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泛啸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 切換到創(chuàng)建項(xiàng)目的目錄 cd C:\Users\admin\Desktop\DjangoProject創(chuàng)建名為pr...
    在努力中閱讀 3,259評(píng)論 2 3
  • (一)、啟動(dòng)服務(wù)器 (二)秃症、創(chuàng)建數(shù)據(jù)庫(kù)表 或 更改數(shù)據(jù)庫(kù)表或字段 Django 1.7.1及以上 用以下命令 1....
    夏天夏星閱讀 5,628評(píng)論 0 17
  • 本網(wǎng)訊 (記者 紫芋灣)“我覺得候址,我進(jìn)步了很多!”“我感覺控筆能力好了很多爸指獭岗仑!”“我最大的收獲,就是可以和大家坐在...
    紫芋灣閱讀 1,083評(píng)論 0 2
  • 過年了聚请。 窗外的鞭炮聲如鼓點(diǎn)般急促荠雕,老房子驚恐地振動(dòng)著。我睜開了疲憊的眼。近日聽力急遽地衰退炸卑,人們說話時(shí)暴...
    槭言閱讀 430評(píng)論 0 3
  • (一)何為雙重人格 通常我們看見雙重人格這樣的字眼既鞠,往往會(huì)有一些貶義的印象。很多小說盖文,電影中都有這樣的描寫损趋,某些人...
    古屋隔海閱讀 1,863評(píng)論 3 1