day 68 django 之api操作
前情回顧一下,:
django項目
安裝:
創建項目
配置(setting,static,csrf)
創建app,python manage.py startapp app1
三部分
urls.py路由配置
1,普通正則
2分組正則
傳位置參數:url(r‘^blog/(\d+)/‘,views.blog)
3分組命名(得到的是關鍵字參數)
url(r‘^blog/(?P<year>(\d+)/‘,views.blog‘)) 視圖函數要傳參blog(request,year)
4用name指定別名
url(r‘^blog/$‘, views.blog, name=‘blog‘) 這裏我們使用別名來進行反向解析,為了得到動態的HTML頁面跳轉效果
html裏面:{%url ‘blog‘%}
views函數裏面from django.urls import reverse
函數返回值裏面return reverse("blog")
5使用命名空間
url(r‘^blog/‘, include(app1.urls,namespace=‘num1‘ 2017 12)) 這裏也牽涉到反向解析
HTML裏面{% url ‘num1:blog‘%} url後面空一格寫單引號,引號裏面寫namespace然後冒號name
views裏面:from django.urls import reverse 返回值return redirect(reverse("num1:blog",arg=(2017,12)))
views.py
request對象
response對象
FBV和CBV
模板語言
{{變量}}
{{變量.}}如果變量是一個字典,我們直接使用這樣的方法去取值
{%for%}循環
{%endfor%}結束循環
{%if%}判斷
{%endif%}結束判斷
過濾器(filter) {{變量名|filter_name:參數}}
{{時間對象|date:‘Y-m-d‘}}
{%url%}
{%load static%}
{%static ‘img/1.png‘%}
母板,繼承,塊,組件
連接數據庫(orm)
五步四部分
1創建數據庫
2在app下的models.py裏面創建model類,繼承models.Model
3.在setting.py裏面配置數據庫連接信息
4在項目project的init裏面寫上import pymysql, pymysql.install_as_mysqldb() # 這一句使用我們的pycharm會自動補全,有提示信息
5,發命令
python manage.py makemigrations # 收集變更
python manage.py migrate # 翻譯成sql語句執行
四部分
models.py
django
pymysql
mysql
orm:類 數據表
類的屬性
數據列 (表裏面的字段)
對象 數據行
對表格進行增刪改查:
查:
models.類名,objects.all() 取到所有的數據是一個列表 [取不到值是不會報錯的,就顯示為空]
models.類名,objects.get() 取到一個對象[特點是取不到值就會報錯]
models.類名.objects.exclude(條件) 得到除了這個條件的其他的結果
models.類名.objects.first()
models.類名.objects.last()
增加:
一種方式:
models.類名.objects.create(name=‘peter‘)
一種方式:
obj = models.類名(name=‘peter‘)
obj.save()
刪除:
models.類名,objects.filter(age=19).delete()
修改:
models.類名.objects.filter(age=90).update(name=‘greate‘)
單個對象是不能夠調用update的
obj=models.類名.objects.get(id=1)
obj.name=‘green‘
obj.save()
今日內容:
單標的增刪改查
單表查詢的api介紹:
13條常用數據:
返回的是queryset對象
1.all()
2.filter()
3.exclude()
4.values()
5.values_list()
6.order_by()
7.reverse()
8.distinct()
返回數字的:
count()
返回bool值的:
exists()
返回具體的數據對象的:
get()
first()
last()
logging配置參數:
logging={
‘version‘:1, # 目前為止只有這一個值,當前使用版本
‘disable_existing_loggers‘:false, # 不禁用已經存在的logger實例
# 定義一些日誌的處理方式
‘handlers‘:{
‘console‘:{
‘level‘:‘‘DEBUG‘‘,
‘class‘:‘logging.streamhandler‘,
},
},
‘loggers‘:{
‘django.db.backends‘:{
‘handlers‘:[‘console‘],
‘propagate‘:True, # 向上傳導
‘level‘:‘‘DEBUG‘‘,
},
}
}
day 68 django 之api操作