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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Django第二篇

發(fā)布時間:2023/12/10 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django第二篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

django第二篇

1.靜態(tài)文件配置

接口前綴:

? STATIC_URL = '/static/'

跟靜態(tài)文件夾的名字沒有關(guān)系,默認(rèn)情況下這個前綴跟靜態(tài)文件夾名字一樣

文件配置

STATICFILES_DIRS = [

? os.path.join(BASE_DIR,'static')

]

'static':就是你的靜態(tài)文件夾路徑,可以設(shè)置多個,會依次查找列表中所有的靜態(tài)文件路勁,找到就停止,都沒有的話返回404(資源不存在)

2.form表單操作

form表單觸發(fā)提交數(shù)據(jù)的動作兩種方式:

<input type='submit'><button></button>

form表單提交數(shù)據(jù)地址的指定及方式:

? action屬性控制提交的地址

方式一:全路徑

<form action='http://127.0.0.1:8000/login/'>

方式二:只寫路勁后綴

<form action='/login/'>

方式三:不寫(默認(rèn)往當(dāng)前路勁提交)

注意:利用a標(biāo)簽href屬性可以指定頁面跳轉(zhuǎn)的路勁,href可以寫全路勁,但是推薦寫后綴即可

<a href='/login/' class='btn btn-success'>登入</a>

兩種請求方式(form表單默認(rèn)是get請求)

#根據(jù)客戶端請求方式的不同執(zhí)行不同的邏輯代碼 def login(request):#獲取客戶端的請求方式print(request.method) #注意是全大寫的字符串if request.method == 'POST':return HttpResponse('ok')return render(request,'login.html')

獲取請求方式中攜帶的參數(shù)

def login(request):if request.method == 'POST':print(request.POST) #里面存放了客戶端post提交的所有數(shù)據(jù),可以看成是一個大字典,{'username':['lucas'],'password':['123']}print(request.POST.get('username')) #value雖然是一個列表,但是獲取值得時候拿到的是單個元素,默認(rèn)只會取列表里的最后一個元素print(requet.POST.getlist('username')) #一次性獲取value列表里的所有數(shù)據(jù),應(yīng)用場景可以是用戶的愛好,多選框 #get請求的取值方式和post一樣

3.django連接數(shù)據(jù)庫

修改配置文件

DATABASES = {'default':{'ENGINE':'django.db.backends.mysql','NAME':'day54', #庫名'HOST':'127.0.0.1','POST':3306,'USER':'root','PASSWORD':'123'} } #注意:鍵必須是大寫

替換

? 告訴Django用pymysql替換它,默認(rèn)mysqldb模塊連接數(shù)據(jù)庫

? 方式一:在項目文件夾下面的__init__.py

? 方拾二:在應(yīng)用文件夾下的__init__.py

#固定寫法 import pymysql pymysql.install_as_Mysql()

4.orm簡單操作

orm簡介

? orm:對象關(guān)系映射,簡單來說就是類對應(yīng)數(shù)據(jù)庫中的一張表,類對象對應(yīng)表記錄,對象的屬性對應(yīng)某條記錄的值

? django的orm不能自動創(chuàng)建庫,但是可以自動創(chuàng)建表

? 小提示:一個django項目就使用一個庫,不要多個django項目使用一個庫

數(shù)據(jù)庫遷移(同步)命令

? 在models創(chuàng)建好類之后,還需要兩個命令:

? python3(當(dāng)前所用解釋器名稱) manage.py makemigrations:將數(shù)據(jù)庫變動記錄到文件中

? python3 manage.py migrate:將數(shù)據(jù)庫變動同步到數(shù)據(jù)庫中

5.操作數(shù)據(jù)庫

User表插入數(shù)據(jù)

方式一:

user_obj = models.User.objects.create(name=username,password=password) #create方法有一個返回值,就是當(dāng)前新增的數(shù)據(jù)對象本身

方式二:

user_obj = models.User(name=password,password=password) user_obj.save()

查詢數(shù)據(jù)

獲取User表所有的數(shù)據(jù)
user_list = models.User.objects.all() #獲取user表所有的數(shù)據(jù)

上圖中的user_list是QuerySet對象,可以通過點query查看獲取sql語句,QuerySet對象支持索引取值,但是不推薦,推薦使用自帶的.first()來獲取第一條數(shù)據(jù)

獲取單個值
user_query = models.User.objects.filter(id=1) # queryset對象 user_obj = user_query.first() # 數(shù)據(jù)對象 # 當(dāng)條件不存在的情況下會返回一個空的queryset對象,推薦使用 user_obj = models.User.objects.get(id=1) # 用get可以直接獲取到數(shù)據(jù)對象本身,但是查詢條件不存在的情況下直接報錯,所有推薦使用filter

刪除數(shù)據(jù)

models.User.objects.filter(id=1).delete() # 會將queryset所有的數(shù)據(jù)對象全部刪除

修改數(shù)據(jù)

方式一:

models.User.objects.filter(id=edit_id).update(name=username,password=password) #調(diào)用queryset封裝的方法,該方法是一個批量操作,會將queryset內(nèi)所有的數(shù)據(jù)對象全部修改

方式二:

user_obj = models.User.objects.filter(id=edit_id).first() user_obj.name = username user_obj.password = password user_obj.save()
上述edit_id獲取方式:

方式一:利用input隱藏一個標(biāo)簽

<input type='hidden' name='edit_id' values='{{user_obj.pk}}'> #django中pk默認(rèn)取的是主鍵字段,User表中id就是主鍵字段

方式二:GET請求攜帶

<form action='/edit/?edit_id={{user_obj.pk}}' method='post'></form>

上述修改、刪除都是通過queryset對象點的方法完成的,會作用于內(nèi)部所有的數(shù)據(jù)對象,類似于批量操作

注意:修改模型層里面的根表相關(guān)的所有的數(shù)據(jù)之后,必須重新執(zhí)行數(shù)據(jù)庫遷移命令

6.django請求生命周期

轉(zhuǎn)載于:https://www.cnblogs.com/yanminggang/p/10986980.html

總結(jié)

以上是生活随笔為你收集整理的Django第二篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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