一. request请求相关信息
request 请求相关信息:
request.mothod # 当前请求方法
request.path # 请求路径
request.POST # QueryDict是django加工出来的新的字典对象,其实还是继承的python的字典然后拓展的功能
request.boby # post请求方法写的数据的原始数据 b'username=root&password=123'
request.GET # 不是get请求方法携带的数据,而是网址上的查询参数数据
request.get_full_path() # 携带查询参数的路径 /index/?a=1&b=2
二.响应相关信息
from django.shortcuts import render,HttpResponse,redirect
from django.http import JsonResponse
render : 响应html文件数据的
HttpResponse 响应字符串数据
redirect : 重定向
JsonResponse: 响应json格式数据的
三.有名分组 and 无名分组
伪代码:
'''
请求来了之后
path = request.path
import re
for item in urlpatterns:
if re.match('^home/',path):
home()
break
'''
1.匹配 / 路径
url(r'^$', views.home), # 匹配根路径
2.无名分组
# 无名分组: 将匹配到的数据以位置传参的形式传递给了book函数
url:
# url(r'^book/(d+)/(d+)/', views.book)
views:
def book(request,month,year):
print('year>>>>',year, type(year)) # year都是字符串数据
print('month>>>>',month, type(month)) # month都是字符串数据
# select * from ... where year=year
res = f"{year}--{month}--book"
# var a = `${name}`
# '{}'.format
return HttpResponse(res)
# 这个month和year会自动接收url的两个d+ 然后传入到book函数中
3. 有名分组
有名分组:
将匹配到的数据以关键字传参的形式传递给book函数,而book的形参名称必须有一个year和一个month,位置不固定
url:
url(r'^book/(?P<year>d+)/(?P<month>d+)/', views.book),
views:
def book(request,month,year):
print('year>>>>',year, type(year)) # year都是字符串数据
print('month>>>>',month, type(month)) # month都是字符串数据
# select * from ... where year=year
res = f"{year}--{month}--book"
# var a = `${name}`
# '{}'.format
return HttpResponse(res)
4.注意点
# ^/book/ 错误的! 前置导航斜杠不需要自己写,django帮你做了
# 写正则时,注意,别写冲突了,不然导致后面有些路径就失效了
四 cbv and fbv
fbv:
url:
url(r'login/',views.home)
views:
def login(request):
if request.method == 'GET':
return render(request,'login.html')
else:
username = request.POST.get('username')
if username == 'laobai':
return redirect('/home/')
else:
return HttpResponse('你不是至尊会员')
cbv:
url:
url(r'^book/',views.BookView.as_view())
views:
先要引入
from django.views import View
class BookView(View):
def get(self,request):
print('来了')
return HttpResponse('book')
def post(self,request):
pass