HttpResponse类位于django.http模块中。
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 == 'taibai' and password == 'dsb': # return render(request,'home.html') return redirect('/home/') #重定向 else: return HttpResponse('滚犊子,赶紧去充钱!!!') #首页 def home(request): return render(request,'home.html') HttpResponse.content:响应内容 HttpResponse.charset:响应内容的编码 HttpResponse.status_code:响应的状态码 redirect() :给浏览器了一个30x的状态码参数可以是:
一个模型:将调用模型的get_absolute_url() 函数
2.一个视图,可以带有参数:将使用urlresolvers.reverse 来反向解析名称
3.一个绝对的或相对的URL,将原封不动的作为重定向的位置。
默认返回一个临时的重定向;传递permanent=True 可以返回一个永久的重定向。
示例:
你可以用多种方式使用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 == 'anwen@123' and password == '123': return redirect('/app01/home/') ##重定向到/app01/home/路径,这也是发送了一个请求,别忘了在上面引入这个redirect类,和render、Httpresponse在一个地方引入 else: return HttpResponse('登录失败!') def home(request): return render(request, 'home.html') #app01里的 urls.py from django.conf.urls import url from app01 import views urlpatterns=[ url(r'^$',views.login), url(r'^home/',views.home), ]上面几个文件搞好之后,我们重启Django项目,然后登陆页面的输入网址,注意,你输入的网址端口要和你启动的django项目的端口一样。
| 一点击提交按钮,你看一下network里面发送了几个请求:两个请求,一个是login请求,一个index请求。 |
扩展阅读:** key两次请求,关于301和302:
1)301和302的区别。 301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取 (用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)——这是它们的共同点。 他们的不同在于。301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址; 302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。 SEO302好于301 2)重定向原因: (1)网站调整(如改变网页目录结构); (2)网页被移到一个新地址; (3)网页扩展名改变(如应用需要把.php改成.Html或.shtml)。 这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的 网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。 临时重定向(响应状态码:302)和永久重定向(响应状态码:301)对普通用户来说是没什么区别的,它主要面向的是搜索引擎的机器人。 A页面临时重定向到B页面,那搜索引擎收录的就是A页面。 A页面永久重定向到B页面,那搜索引擎收录的就是B页面。 用redirect可以解释APPEND_SLASH的用法!