日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Django框架(三)—— orm增删改查、Django生命周期

發(fā)布時(shí)間:2024/4/15 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django框架(三)—— orm增删改查、Django生命周期 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

orm增刪改查、Django生命周期

一、orm介紹

1、什么是orm

ORM即Object Relational Mapping,全稱(chēng)對(duì)象關(guān)系映射。

2、使用orm的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):
  • 不用寫(xiě)SQL語(yǔ)句
  • 開(kāi)發(fā)效率高
缺點(diǎn):
  • SQL的效率低

3、使用orm

  • 如果連接的是pycharm默認(rèn)的Sqlite,不用改動(dòng),使用默認(rèn)配置即可

  • 如果連接mysql,需要在配置文件中的setting中進(jìn)行配置:

    將DATABASES={} 更新為

    DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': '123123', 'NAME': 'test_database', } }

    同時(shí)還要在__init__.py文件中進(jìn)行初始化設(shè)置:

    import pymysql pymysql.install_as_MySQLdb()

配置完以后,要進(jìn)行數(shù)據(jù)遷移(在pycharm的終端Terminal中運(yùn)行指令),否則數(shù)據(jù)更新不能同步到mysql數(shù)據(jù)庫(kù)中

python manage.py makemigrations ----記錄數(shù)據(jù)庫(kù)的變化,在migrations文件中可以看到記錄 python manage.py migrate ----將變化同步到數(shù)據(jù)庫(kù)中

或者

菜單 tools--->Run manage.py Task,即可進(jìn)入manage.py,直接輸入以下指令即可

makemigrations ----記錄數(shù)據(jù)庫(kù)的變化,在migrations文件中可以看到記錄 migrate ----將變化同步到數(shù)據(jù)庫(kù)中

4、orm的使用限制

??只能創(chuàng)建數(shù)據(jù)表和字段不能創(chuàng)建數(shù)據(jù)庫(kù)(必須手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù))

??創(chuàng)建一個(gè)類(lèi)就表示創(chuàng)建了一個(gè)數(shù)據(jù)表,類(lèi)中的屬性表示數(shù)據(jù)表中的字段

創(chuàng)建表和字段在modules.py中

類(lèi) ---> 數(shù)據(jù)表 屬性 ---> 字段

5、orm創(chuàng)建表和字段

# 類(lèi)必須繼承models.Model類(lèi),否則只表示一個(gè)普通的類(lèi) # AutoField 自動(dòng)增長(zhǎng)的int類(lèi)型 # primary_key=True 該字段是主鍵 # CharField(max_length=32) 表示 varchar(32) class User(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) password = models.CharField(max_length=32) address = models.CharField(max_length=32)

二、orm增刪改字段

在增刪改以后都要進(jìn)行數(shù)據(jù)遷移

1、orm增加字段

直接在創(chuàng)建表的類(lèi)中添加一個(gè)屬性,即增加一個(gè)字段,然后執(zhí)行數(shù)據(jù)遷移

添加的字段必須有默認(rèn)值,兩種方式

  • 在添加的參數(shù)中添加默認(rèn)值
phone=models.CharField(max_length=64,default='120')
  • 在數(shù)據(jù)遷移的時(shí)候,設(shè)置默認(rèn)值

2、orm刪除字段

將類(lèi)中的屬性注釋,即表示刪除字段,執(zhí)行數(shù)據(jù)遷移

3、orm修改字段

直接修改類(lèi)中的屬性,執(zhí)行數(shù)據(jù)庫(kù)遷移命令

4、案例總結(jié)

  • user表的增刪改
(1)單表查詢所有用戶

得到的是queryset對(duì)象(類(lèi)似于列表),列表中一個(gè)個(gè)對(duì)象[user1, user2, user3]

res = models.User.objects.all()
(2)render

返回頁(yè)面,將queryset對(duì)象(類(lèi)似于列表)res返回到userlist.html頁(yè)面的user_list

render(request, 'userlist.html', {'user_list': res})
(3)循環(huán)模板
{% for user in user_list %}# 要循環(huán)的內(nèi)容,下面的插值表達(dá)式表示獲取每一個(gè)user的name的數(shù)據(jù) {{user.name}} {% endfor%}
(4)get請(qǐng)求攜帶參數(shù)

通過(guò)get發(fā)送請(qǐng)求,會(huì)將數(shù)據(jù)暴露出來(lái),例如id就會(huì)顯示http://127.0.0.1:8000/deleteuser/?id=1
前臺(tái)get方式提交的數(shù)據(jù),后臺(tái)從request.GET字典里取值:

id = request.GET.get('id') # 推薦使用,即使沒(méi)有接收到數(shù)據(jù)也會(huì)有默認(rèn)值,不會(huì)拋出異常 或者 id = request.GET['id'] # 該方式要是沒(méi)有接收到數(shù)據(jù)會(huì)出現(xiàn)異常
(5)post請(qǐng)求提交數(shù)據(jù)

前臺(tái)post方式提交的數(shù)據(jù),后臺(tái)從request.POST字典里取值:

name = request.POST.get('name')
(6)刪除數(shù)據(jù)記錄

先過(guò)濾找到指定數(shù)據(jù),然后調(diào)用方法delete()刪除該數(shù)據(jù)

# 返回值是影響的行數(shù) res = models.User.objects.filter(id = id).delete()
(7)添加數(shù)據(jù)記錄

兩種方式:

  • 方式一:
user=models.User.objects.create(name=name,password=pwd,address=addr)
  • 方式二:
user = models.User(name=name, password=password, address=addr) user.save()
(8)修改數(shù)據(jù)記錄

先過(guò)濾找到要修改的數(shù)據(jù)記錄,然后調(diào)用update()方法修改數(shù)據(jù)

models.User.objects.filter(id = id).update(name=name,password=password,age=age)
(9)查詢單條數(shù)據(jù)

由于過(guò)濾到的所有數(shù)據(jù)可能是多條數(shù)據(jù),所以要用first()來(lái)取出第一條

models.User.objects.filter(id=id).first()

三、Django生命周期

瀏覽器 ---> web服務(wù)器 ---> 路由匹配 ----> 視圖函數(shù) ---> 操作模板和數(shù)據(jù)

圖文參考:參考網(wǎng)址

博客內(nèi)容僅供參考,部分參考他人優(yōu)秀博文,僅供學(xué)習(xí)使用

轉(zhuǎn)載于:https://www.cnblogs.com/zhuzhiwei-2019/p/10779076.html

總結(jié)

以上是生活随笔為你收集整理的Django框架(三)—— orm增删改查、Django生命周期的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。