• Django redirect()函数实现页面重定向


    1,通过路由反向解析进行重定向

    1.1 添加视图函数

    myshop/app2/views.py

    1. from django.http import HttpResponse
    2. from django.shortcuts import render
    3. from django.urls import reverse
    4. def index(request):
    5. return HttpResponse("app2 的index")
    6. # 反向解析
    7. def url_reverse(request):
    8. # 使用reverse()方法反向解析
    9. print('解析结果:'+ reverse("app2_url_reverse")) # 使用reverse()方法反向解析 ,reverse("app2_url_reverse") 对应urls的 name='app2_url_reverse'
    10. return render(request, "2/url_reverse.html")
    11. def test_get(request):
    12. print(request.get_host()) # 域名加端口
    13. print(request.build_absolute_uri()) # 获取完整的请求URI,包括查询字符串
    14. print(request.path) # 获取访问路径,不含参数
    15. print(request.get_full_path()) # 获取访问路径,不含参数
    16. print(request.method) # 获取请求中使用的HTTP方式(POST/GET)
    17. print(request.GET) # 获取GET请求的参数
    18. print(request.META["HTTP_USER_AGENT"]) # 用户浏览器的user-agent字符串
    19. print(request.META["REMOTE_ADDR"]) # 客户端IP地址
    20. print(request.GET.get('username')) # 获取get参数
    21. return HttpResponse("")
    22. # 获取请求中的使用HTTP方式(POST/GET)
    23. def test_post(request):
    24. print(request.method)
    25. print(request.POST.get('username'))
    26. return render(request, '2/test_post.html')
    27. def test_response(request):
    28. response = HttpResponse()
    29. response.write("

      hello django

      "
      )
    30. response.write("
      "
      )
    31. response.write(response.content)
    32. response.write("
      "
      )
    33. response.write(response['Content-Type'])
    34. response.write("
      "
      )
    35. response.write(response.status_code)
    36. response.write("
      "
      )
    37. response.write(response.charset)
    38. response.write("
      "
      )
    39. return response
    40. def test_render(request):
    41. return render(request, '2/test_render.html', {'info':'hello django'}, content_type='text/html; charset=utf-8')
    42. from django.shortcuts import redirect
    43. def test_redirect_views(request):
    44. return redirect('test_render')

    1.2 添加路由地址

    myshop/app2/views.py

    1. from django.urls import path, re_path
    2. from . import views
    3. urlpatterns = [
    4. path('index', views.index, name='index'),
    5. path('url_reverse', views.url_reverse, name='app2_url_reverse'), # 使用reverse()方法反向解析 ,name对于视图的reverse("app2_url_reverse")
    6. path('test_get', views.test_get, name='test_get'),
    7. path('test_post', views.test_post, name='test_post'),
    8. path('test_response', views.test_response, name='test_response'),
    9. path('test_render', views.test_render, name='test_render'),
    10. path('test_redirect_views', views.test_redirect_views, name='test_redirect_views'),
    11. ]

    1.3 访问页面

    http://127.0.0.1:8000/app2/test_redirect_views 

    重定向至http://127.0.0.1:8000/app2/test_render

     2,通过绝对的或相对的URL,让浏览器跳转到指定的URL进行重定方向

    2.1 添加视图函数

    myshop/app2/views.py

    1. from django.http import HttpResponse
    2. from django.shortcuts import render
    3. from django.urls import reverse
    4. def index(request):
    5. return HttpResponse("app2 的index")
    6. # 反向解析
    7. def url_reverse(request):
    8. # 使用reverse()方法反向解析
    9. print('解析结果:'+ reverse("app2_url_reverse")) # 使用reverse()方法反向解析 ,reverse("app2_url_reverse") 对应urls的 name='app2_url_reverse'
    10. return render(request, "2/url_reverse.html")
    11. def test_get(request):
    12. print(request.get_host()) # 域名加端口
    13. print(request.build_absolute_uri()) # 获取完整的请求URI,包括查询字符串
    14. print(request.path) # 获取访问路径,不含参数
    15. print(request.get_full_path()) # 获取访问路径,不含参数
    16. print(request.method) # 获取请求中使用的HTTP方式(POST/GET)
    17. print(request.GET) # 获取GET请求的参数
    18. print(request.META["HTTP_USER_AGENT"]) # 用户浏览器的user-agent字符串
    19. print(request.META["REMOTE_ADDR"]) # 客户端IP地址
    20. print(request.GET.get('username')) # 获取get参数
    21. return HttpResponse("")
    22. # 获取请求中的使用HTTP方式(POST/GET)
    23. def test_post(request):
    24. print(request.method)
    25. print(request.POST.get('username'))
    26. return render(request, '2/test_post.html')
    27. def test_response(request):
    28. response = HttpResponse()
    29. response.write("

      hello django

      "
      )
    30. response.write("
      "
      )
    31. response.write(response.content)
    32. response.write("
      "
      )
    33. response.write(response['Content-Type'])
    34. response.write("
      "
      )
    35. response.write(response.status_code)
    36. response.write("
      "
      )
    37. response.write(response.charset)
    38. response.write("
      "
      )
    39. return response
    40. def test_render(request):
    41. return render(request, '2/test_render.html', {'info':'hello django'}, content_type='text/html; charset=utf-8')
    42. from django.shortcuts import redirect
    43. def test_redirect_views(request):
    44. return redirect('test_render')
    45. def test_redirect_url(request):
    46. return redirect('http://www.baidu.com')

    2.2 添加路由地址

    myshop/app2/urls.py

    1. from django.urls import path, re_path
    2. from . import views
    3. urlpatterns = [
    4. path('index', views.index, name='index'),
    5. path('url_reverse', views.url_reverse, name='app2_url_reverse'), # 使用reverse()方法反向解析 ,name对于视图的reverse("app2_url_reverse")
    6. path('test_get', views.test_get, name='test_get'),
    7. path('test_post', views.test_post, name='test_post'),
    8. path('test_response', views.test_response, name='test_response'),
    9. path('test_render', views.test_render, name='test_render'),
    10. path('test_redirect_views', views.test_redirect_views, name='test_redirect_views'),
    11. path('test_redirect_url', views.test_redirect_url, name='test_redirect_url'),
    12. ]

    2.3 访问页面

    http://127.0.0.1:8000/app2/test_redirect_url

    重定向至百度一下,你就知道 (baidu.com)

  • 相关阅读:
    PT_连续型随机变量/分布函数/概率密度
    烧录场景下的源代码防泄密方案分享
    小程序图形:echarts-weixin 入门使用
    重磅!涵盖全微服务操作的Spring Cloud 文档竟出自Alibaba
    Leetcode643:子数组最大平均数 I
    如何选择适合您需求的SOCKS5代理
    数据结构:二叉树的链式结构
    2310C++成员函数静态变量
    Python小技巧:轻松找到电脑里的隐藏图片!
    Java零基础入门-多维数组
  • 原文地址:https://blog.csdn.net/qq_26086231/article/details/139484460