python之路day5_Python语言之python之路笔记day19
本文主要向大家介紹了Python語言之python之路筆記day19,通過具體的內容向大家展示,希望對大家學習Python語言有所幫助。
一、Django請求生命周期
對于所有的web框架來說本質就是一個socket服務端,瀏覽器是socket客戶端
->?URL對應關系(匹配)?->?視圖函數?->?返回用戶字符串
->?URL對應關系(匹配)?->?視圖函數?->?打開一個HTML文件,讀取內容
二、創建django?projcet
django-admin?startproject?mysite??#開始項目
..
mysite
mysite
-?配置文件
-?url.py
-?settings.py
cd?mysite
python?manage.py?startapp?cmdb??#開始一個app
mysite
mysite
-?配置文件
-?url.py
-?settings.py
cmdb
-?views.py
-?admin.py
-?models.py?#?創建數據庫表
python3.5?manage.py?runserver??#啟動
三、配置
模板路徑???/templates/???記著加s
靜態文件路徑??/static/
#?CSRF
四、編寫程序
a.?url.py
/index/????->???func
from?cmdb?import?views
urlpatterns?=?[
url(r'^login/$',?views.login),
url(r'^index/$',?views.index),
url(r'^lists/$',?views.lists),
url(r'^add/$',?views.add),
]
b.?views.py
def?func(request):
#?包含所有的請求數據
...
return?HttpResponse('字符串')
return?render(request,?'index.html',?{''})
retrun?redirect('URL’)
def?user_list(request,chose_id):
return?HttpResponse(chose_id)
c.?模板語言
return?render(request,?'index.html',?{'li':?[11,22,33]})
{%?for?item?in?li?%}
{{item}}
{%?endfor?%}%
***********??索引用點?**********
{{item.0?}}
五、路由系統,URL
1、url(r'^index/',?views.index),
url(r'^home/',?views.Home.as_view()),
2、url(r'^detail-(\d+).html',?views.detail),
3、url(r'^detail-(?P\d+)-(?P\d+).html',?views.detail)
PS:
def?detail(request,?*args,**kwargs):
pass
實戰:
a.
url(r'^detail-(\d+)-(\d+).html',?views.detail),
def?func(request,?nid,?uid):
pass
def?func(request,?*args):
args?=?(2,9)
def?func(request,?*args,?**kwargs):
args?=?(2,9)
b.
url(r'^detail-(?P\d+)-(?P\d+).html',?views.detail)
def?func(request,?nid,?uid):
pass
def?funct(request,?**kwargs):
kwargs?=?{'nid':?1,?'uid':?3}
def?func(request,?*args,?**kwargs):
args?=?(2,9)
4、?name
對URL路由關系進行命名,?*****?以后可以根據此名稱生成自己想要的URL?*****
url(r'^asdfasdfasdf/',?views.index,?name='i1'),
url(r'^yug/(\d+)/(\d+)/',?views.index,?name='i2'),
url(r'^buy/(?P\d+)/(?P\d+)/',?views.index,?name='i3'),
def?func(request,?*args,?**kwargs):
from?django.urls?import?reverse
url1?=?reverse('i1')??????????????????????????????#?asdfasdfasdf/
url2?=?reverse('i2',?args=(1,2,))?????????????????#?yug/1/2/
url3?=?reverse('i3',?kwargs={'pid':?1,?"nid":?9})?#?buy/1/9/
xxx.html
{%?url?"i1"?%}???????????????#?asdfasdfasdf/
{%?url?"i2"?1?2?%}???????????#?yug/1/2/
{%?url?"i3"?pid=1?nid=9?%}???#?buy/1/9/
注:
#?當前的URL
request.path_info
5、多級路由
project/urls.py
from?django.conf.urls?import?url,include
from?django.contrib?import?admin
urlpatterns?=?[
url(r'^cmdb/',?include("app01.urls")),
url(r'^monitor/',?include("app02.urls")),
]
app01/urls.py
from?django.conf.urls?import?url,include
from?django.contrib?import?admin
from?app01?import?views
urlpatterns?=?[
url(r'^login/',?views.login),
]
app02/urls.py
from?django.conf.urls?import?url,include
from?django.contrib?import?admin
from?app02?import?views
urlpatterns?=?[
url(r'^login/',?views.login),
]
6、默認值(欠)
7、命名空間(欠)
六、視圖
1、獲取用戶請求數據
request.GET
request.POST
request.FILES
PS:
GET:獲取數據
POST:提交數據
2、checkbox等多選的內容
request.POST.getlist()
3、上傳文件
#?上傳文件,form標簽做特殊設置
obj?=?request.FILES.get('fafafa')
obj.name
f?=?open(obj.name,?mode='wb')
for?item?in?obj.chunks():
f.write(item)
f.close()
4、FBV?&?CBV
function?base?view
url.py
index?->?函數名
view.py
def?函數(request):
...
====》
/index/?->?函數名
/index/?->?類
====》
建議:兩者都用
5、裝飾器
欠
七、模板
八、ORM操作
select?*?from?tb?where?id?>?1
#?對應關系
models.tb.objects.filter(id__gt=1)
models.tb.objects.filter(id=1)
models.tb.objects.filter(id__lt=1)
實戰連接數據庫:
a.?創建類,先寫類
from?django.UserInfo?import?models
#?app01_UserInfo
class?UserInfo(models.Model):
#?id列,自增,主鍵
#?用戶名列,字符串類型,指定長度
username?=?models.CharField(max_length=32)
password?=?models.CharField(max_length=64)
b.?注冊APP
INSTALLED_APPS?=?[
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
c.?執行命令,數據庫表就創建成功了
python?manage.py??makemigrations
python?manage.py??migrate
d.?**********?注意?***********
Django默認使用MySQLdb模塊鏈接MySQL
主動修改為pymysql,在project同名文件夾下的__init__文件中添加如下代碼即可:
import?pymysql
pymysql.install_as_MySQLdb()
1).?根據類自動創建數據庫表
#?app下的models.py
python?manage.py??makemigrations
python?manage.py??migrate
字段:
字符串類型
數字
時間
二進制
自增(primary_key=True)
字段的參數:
null???????????????->?db是否可以為空
default????????????->?默認值
primary_key????????->?主鍵
db_column??????????->?列名
db_index???????????->?索引
unique??????????????????->?唯一索引
unique_for_date?????->只對前邊的時間做索引
unique_for_month??->只對前邊的月份做索引
unique_for_year?????->只對前邊的年份做索引
auto_now???????????->?創建時,自動生成時間
auto_now_add???????->?更新時,自動更新為當前時間
#?obj?=?UserGroup.objects.filter(id=1).update(caption='CEO'),django里不生效
django?支持下邊這個方法,自動更新時間
#?obj?=?UserGroup.objects.filter(id=1).first()
#?obj.caption?=?"CEO"
#?obj.save()
choices?????????????????->?django?admin中顯示下拉框,避免連表查詢
blank?????????????->?django?admin是否可以為空
verbose_name??????->?django?admin顯示字段中文
editable??????????true?or?false??->?django?admin是否可以被編輯
error_messages????->?錯誤信息欠
help_text?????????->?django?admin提示
validators????????????->?django?form?,自定義錯誤信息(欠)
創建?Django?用戶:python?manage.py?createsuperuser
2).?根據類對數據庫表中的數據進行各種操作
一對多:
a.?外鍵
b.
外鍵字段_id
c.
models.tb.object.create(name='root',?user_group_id=1)
d.
userlist?=?models.tb.object.all()
for?row?in?userlist:
row.id
row.user_group_id
row.use_group_caption
本文由職坐標整理并發布,希望對同學們學習Python有所幫助,更多內容請關注職坐標編程語言Python頻道!
總結
以上是生活随笔為你收集整理的python之路day5_Python语言之python之路笔记day19的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python当壁纸_使用Python脚
- 下一篇: 美国国家安全局是如何入侵你的电脑的?