一、request 对象
当一个页面被请求时,Django 就会创建一个包含本次请求原信息(请求报文中的请求行、首部信息、内容主体等)的 HttpRequest 对象
Django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。
当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。
Django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。
请求相关的属性方法(request – HttpRequest) 对象
def index(request): # http相关请求信息------封装-------HttpRequest对象
if request.method == 'GET':
print(request.body) # 获取post请求提交过来的原始数据
print(request.GET) # 获取GET请求提交的数据
print(request.META) # 请求头相关信息,就是一个大字典
print(request.path) # /index/ 路径
print(request.path_info) # /index/ 路径
print(request.get_full_path()) #/index/?username=dazhuang&password=123
return render(request,'index.html')
else:
print(request.body) # b'username=dazhuang'
print(request.POST) # 获取POST提交的数据
return HttpResponse('OK!')
响应相关的方法
HttpResponse -- 回复字符串的时候来使用
render ------ 回复一个HTML页面的使用
redirect ----- 重定向
示例:
def login(request):
if request.method == 'GET':
return render(request,'login.html')
else:
username = request.POST.get('username')
password = request.POST.get('password')
if username == 'skq' and password == 'dsb':
# return render(request,'home.html')
return redirect('/home/') # 重定向
else:
return HttpResponse('滚犊子')
# 首页
def home(request):
return render(request,'home.html')
二、301 与 302 的区别
-
共同点:301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取 (用户看到的效果就是他输入的地址www.xxxx.com 变成了另一个地址)
-
不同点
-
301永久重定向:301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在
抓取新内容的同时也将旧的网址交换为重定向之后的网址
A页面永久重定向到B页面,那搜索引擎收录的就是B页面 -
302临时重定向:302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A
跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址A页面临时重定向到B页面,那搜索引擎收录的就是A页面
-
临时重定向(响应状态码:302)和永久重定向(响应状态码:301)对普通用户来说是没什么区别
的,它主要面向的是搜索引擎的机器人
-