method:請求方式
GET:get請求的參數(post請求,也能夠攜帶參數)
POST:post請求的參數(本質是從bdoy中取出來,放到裏面了)
COOKIES--->後面講
META:字典(放着好多東西,前端傳過來的,必定能從其中拿出來)
body:post提交的數據
path:請求的路徑,不帶參數
request.get_full_path() 請求路徑,帶參數
session---後面講
user---後面講
FILES
encoding:編碼格式html
-三件套
-JsonResponse:往前端返回json格式數據(沒有它,我能夠本身寫)
-轉列表格式:指定safe=False
-中文字符問題:json_dumps_params={'ensure_ascii':False}前端
3 JsonResponseajax
# JsonResponse
url(r'^json$', app01_views.JasonRes),
from django.http import JsonResponse
def JasonRes(request):
dic={'id':1,'name':'lll六六六','publish':'laonanhai','publish_date':'2019-01-9','author':'dj'}
# import json
# return HttpResponse(json.dumps(dic,ensure_ascii=False))
return JsonResponse(dic,safe=False,json_dumps_params={'ensure_ascii':False})
-cbv:一個路由寫一個類
-先定義一個類:繼承自View
from django.views import View
class MyClass(View):
# 當前端發get請求,會響應到這個函數
def get(self, request):
return render(request,'index.html')
# 當前端發post請求,會響應到這個函數
def post(self,request):
print(request.POST.get('name'))
return HttpResponse('cbv--post')
-在路由層:
re_path('^myclass/$',views.MyClass.as_view()),django
# CBV
url(r'^myclass/$', app01_views.Myclass.as_view()),
from django.views import View
class Myclass(View):
def get(self,request):
return render(request,'index.html')
def post(self,request):
print(request.POST.get('name'),request.POST.get('pwd'))
return HttpResponse('CBV--POST')
-form表單默認提交的編碼方式是enctype="application/x-www-form-urlencoded"
-前端:若是要form表單上傳文件,必須指定編碼方式爲:multipart/form-data
-後端:
file=request.FILES.get('myfile')
with open(file.name,'wb') as f:
for line in file:
f.write(line)json
# FILES
url(r'^file', app01_views.file_upload),
def file_upload(request):
if request.method=='GET':
return render(request,'file_upload.html')
else:
print(request.POST)
print(request.FILES)
from django.core.files.uploadedfile import InMemoryUploadedFile
file1=request.FILES.get('myfile1')
print(type(file1))
file2=request.FILES.get('myfile2')
import os,time
name=str(time.strftime("%Y-%m-%d"))+file1.name
print(name)
path=os.path.join('media',name)
print(path)
with open(path,'wb') as f:
for line in file1:
f.write(line)
# with open(file2.name,'wb') as f:
# for line in file2:
# f.write(line)
return HttpResponse('上傳成功!')
<body>
<form action="" method="post" enctype="multipart/form-data">
{#<form action="" method="post" enctype="application/x-www-form-urlencoded">#}
<p>用戶名 <input type="text" name="name"></p>
<input type="file" name="myfile1">
{# <input type="file" name="myfile2">#}
<input type="submit" name="submit">
</form>
</body>
-multipart/form-data(上傳文件)
-application/x-www-form-urlencoded(默認編碼)後端
圖書管理系統
-表:
book表
author表
publish表
-一對一:一對多的關係一旦確立,關聯字段寫在哪均可以session
author=models.OneToOneField(to='Author_sim',to_field='id',on_delete=models.CASCADE)
-一對多:一對多的關係一旦確立,關聯關係寫在多的一方app
publisher=models.ForeignKey(to='Publisher',to_field='id',on_delete=models.CASCADE)
-多對多:多對多的關係,必須建立第三張表(中間表)分佈式
authors=models.ManyToManyField(to='Author_sim')函數
1 request對象
-GET
-POST
-method
-body
-path:只是路徑article/1/44/
-get_full_path():帶參數的路徑:article/1/44/?id=1&name=12
-META:字典,客戶端的ip,客戶端請求的全部東西
-FILES:字典,客戶端上傳的文件字典
-is_ajax():判斷是不是ajax請求
2 HttpResponse:只要是響應,必定是它的對象
-render(request,'模板名字',{key:value})
-HttpResponse()
-redirect()
-JsonResponse():封裝了json.dumps,json_dumps_params={'ensure_ascii': False}
3 CBV和FBV
class Test(View):
dispatch方法:總的分發方法
get
post
路由:
類名.as_view()
補充:集羣和分佈式
4 文件上傳:
前端:form提交:指定編碼格式from-data
後臺:file=request.FILES.get('名字')
-打開空文件,用for循環讀file,寫入空文件
5 圖書表設計
-一對一:關聯關係,寫在誰中均可以
-一對多:關聯關係寫在多的一方
-多對多:必須建立中間表
-orm
-一對一:OneToOneField(to=表,to_field=字段)
-一對多:ForeignKey(to='Publish', to_field='id',on_delete=models.CASCADE)
-多對多:models.ManyToManyField(to='Author')自動建立第三張表
-DateField()
-DecimalField()
-IntegerField()