url(r'^app01/',include('app01.urls')),
views.py
from django.shortcuts import render,Httpresponse,redirect
请求相关的属性方法:
def index(request): # http相关请求信息-封装-HttpRequest对象
print(request.META) # 一个字典,里面一堆数据 请求头相关信息
print(request.method)
print(request.path) # /index/路径
print(request.path_info) # 跟上面一样
print(request.get_full_path()) # /index/?username=dazhuang&password=123
print(request.body) # b'username=dazhuang' 最原始的bytes数据
print(request.GET) # get 请求提交的数据
print(request.POST)
响应相关的方法:
HttpResponse # ---回复字符串用的方法
render # 回复一个HTML页面使用
redirect # 重定向
def login(request):
if reuqest.method == 'GET':
return render(request,'login.html')
else:
username = request.POST.get('username')
password = request.POST.get('password')
if pass:
# return render(request,'home.html')
return redirect('/home/',) # 重定向到另一个页面实现跳转 参数是相对路径
else:
return HttpResponse('滚犊子,赶紧去充会员')
def home(request):
return render(request,'home')
类实现
def warrap(f):
def inner(*args,**kwargs)
print('xxxx')
ret = f(*args,**kwargs)
return ret
return inner
from django.views import View
from diango.utils.decorators import method_decorator
# @method_decorator(n1,name='get') 加装饰器方式三
class LoginView(View):
@method_decorator(n1) # 方式2 给所有方法加装饰器
def dispatch(self,request,*args,**kwargs):
print('请求来了')
ret = super().dispatch(request,*args,*kwargs)
print('到点了,走人了')
return ret
#@method_decorator(n1) # 方式1 给当前方法加装饰器
def get(self,request):
return render(request,'login2.html')
def post(self,request):
uname = request.POST.get('uname')
pwd = request.POST.get('pwd')
if ...:
return HttpResponse('登入成功')
else:
return HttpResponse('登入失败')
url(r'^login2/',views.LoginView.as_view()),
通过不同的请求方法找到对应的视图类中的方法
dispatch
函数实现
装饰器
def timmer(f):
#传实参的时候,相当于 f = index #自由变量 在另一个内存空间
def inner(*args,**kwargs):
start_time = time.time()
r = f(*args,**kwargs) #f 就是 index本身 执行了 index()
end_time = time.time()
print(f'测试本函数的执行效率{end_time-start_time}')
return r
return inner
@timmer #darty = timmer(dariy)
def dariy(name,age):
time.sleep(0.5)
print(f'{name}的年龄是{age}')
Django中的路径分发和视图函数的两种实现方式FBV、CBV
原文:https://www.cnblogs.com/he-qing-qing/p/11234581.html