首页 > 其他分享 >9、 Django-重定向-Redirect

9、 Django-重定向-Redirect

时间:2024-07-01 22:46:14浏览次数:1  
标签:Redirect redirect return 重定向 App Django import 路由 reverse

导入模块

from django.shortcuts import redirect, reverse

 

概念:在视图函数中做跳转到其它页面

 

如:

1、views.py
---------------------------------------------------------------------------------
from django.shortcuts import render
from App_route.models import *
from django.http import HttpResponse
from django.shortcuts import redirect, reverse


# 重定向
#当访问到这个函数直接跳转到百度
def my_redirect(request):
    return redirect('https://www.baidu.com')
---------------------------------------------------------------------------------

2、子路由:urls.py
--------------------------------------------------------------------------
from django.urls import path
from App_route.views import *

urlpatterns = [
    #重定向路由
    path('mydirect/', my_redirect, name='mydirect')

]
-----------------------------------------------------------------------------

3、根路由:urls.py
-------------------------------------------------------------------------
from django.contrib import admin
from django.urls import path
from App_route.views import *       #导入视图函数
from django.urls import include     #导入子路由模块 include函数


urlpatterns = [

    #直接使用根路由
    #path('user/', UserInfoView),

    #使用子路由 include 包含子路由 urls.py的路径
    #path('user/', include('App_route.urls')),

    #使用子路由:include函数  、再使用命名空间namespace
    #在使用命名空间namespace的时候:命名空间名一般和应用名相同
    #path('user/', include(('子路由urls.py的路径','App名'), namespace='App名')),
    path('user/', include(('App_route.urls', 'App_route'), namespace='App_route')),

    path('admin/', admin.site.urls),
]
________________________________________________________________________________________________

 

 

 

或跳转到本地连接

# 重定向
def my_redirect(request):
    # return redirect('https://www.baidu.com')
    #或直接跳转到本地的连接
    #跳转到用户列表
    # return redirect('/user/userlist/')

    #如果跳转到带参数的情况、跳转到id为2的用户信息界面
    # return redirect('/user/userdetail/2/')

    #使用反向解析跳转 带命名空间
    #reverse('命名空间:子路由中path的name', args=(1,))  args=(1,) 将参数1传入到路由中(以元组形式)
    # return redirect(reverse('App_route:userdetail', args=(1,)))     #位置参数传参

    #将关键字uid 为2 的值传递给 子路由名为 name=userdetail 的路由中、注意子路由中的参数名和这里的关键字 uid要一致
    return redirect(reverse('App_route:userdetail', kwargs={'uid': 2}))     #关键字传参

    #如果根路由中没有命名空间的话这里可以不写命名空间
    #return redirect(reverse('userdetail', kwargs={'uid': 2}))  # 关键字传参

    #注意如何根路由中的某个应用的路由使用了命名空间的话、后面的调用路由的地方都必须带上命名空间(如:反向解析、视图函数、和templates模板中的文件等)

 

Django路由的反向解析可以让我们在代码中是使用路由的别名替代URL路径、在修改url时避免代码中的硬编码的依赖、同时提高可读性和可维护性

#在视图函数中、反向解析URL
from django.shortcuts import render, redirect, reverse

def buy(request):
    return redirect(reverse('index'))
    return redirect(reverse('detail', args=(1,)))    #传一个参数
    return redirect(reverse('detail', kwargs={"id": 2}))


#templates中、使用别名
{% url 'detail' stu.id %}


#使用命名空间、指定命令空间后、使用反向解析时需要加上命名空间、如:
    #1、在视图函数中:
        return redirect(reverse('App: index'))
    #2、在templates中:
        {% url 'App:index' %}

 

标签:Redirect,redirect,return,重定向,App,Django,import,路由,reverse
From: https://www.cnblogs.com/littlecc/p/18115683

相关文章

  • 8、 Django-路由-router-路由传参
    路由传递参数:通过在路由的后跟/<数据类型:参数>/  将参数传递给指定的视图函数views.py--这个参数可以是变量、而这个变量可以从html中获取 如:models.pyfromdjango.dbimportmodels#传教字段classUserModel(models.Model):name=models.CharField(max_leng......
  • 7、 Django-路由-router-页面跳转
    概念:在实际开发过程中、一个Django项目会包含很多的app、这时候如果我们只在主路由里进行配置就会显得杂乱无章、所以通常在每个app中创建各自的urls.py路由模块、然后从根路由出发、将app所属的url请求、全部转发到相应的urls.py模块而这个从主路由转发到各个应用的路由的过......
  • 10、 Django-模板-templates
     模板语法#模板中的变量语法:{{var}}如果变量不存在、则插入空字符串#方法不能有参数{{int}}{{str}}{{list}}{{list.0}}{{dict}}{{dict.a}}#dict['a']{{func}}#传递函数{{class_......
  • 12、 Django-模型models的基本操作-增删改查
    一般的数据库操作流程:1、创建数据库,设计表结构和字段2、连接Mysq1数据库,并编写数据访问层代码3.业务逻辑层去调用数据访问层执行数据库操作Diango通过Mode1操作数据库,不管你数据库的类型是MySql或者Sqlite,Django自动帮你生成相应数据库类型的SQL语句,所以不需要关注SQL语句......
  • 11、 Django-模型基础-models-ORM框架-管理器对象
     #概述django根据属性的类型确定以下信息当前选择的数据库支持字段的类型渲染管理表单时使用的默认htm1控件在管理站点最低限度的验证django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后则django不会再生成默认的主键列#属性命......
  • 探秘 Django 专业之道
    一、Django项目开发1.web框架底层1.1网络通信注意:局域网个人一般写程序,想要让别人访问:阿里云、腾讯云。去云平台租服务器(含公网IP)程序放在云服务器先以局域网为例我的电脑【服务端】importsocket#1.监听本机的IP和端口sock=socket.socket(socket.AF_INET......
  • RedirectView 你不知道的 URL重定向原理
    肖哥弹架构跟大家“弹弹”RedirectView业务使用与功能设计欢迎点赞,点赞,点赞。关注本人的公众号Solomon肖哥弹架构获取更多精彩内容RedirectView来实现URL重定向策略。这种技术可以用于优化网站结构、处理页面迁移或实现安全的登录跳转。类结构设计业务说明:大型......
  • Django数据库
    一、MySQL驱动程序安装我们使用Django来操作MySQL,实际上底层还是通过python来操作的。因此我们想要用Django来操作MySQL,首先还是需要安装一个驱动程序。在Python3中,驱动程序有多种选择。比如pymysql以及mysqlclient等。这里我们就使用mysqlclient来操作。mysqlclient安装非常简单......
  • 基于Python+Django的商城购物系统设计与实现(源码+数据库+讲解)
    文章目录前言详细视频演示项目运行截图技术框架后端采用Django框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • Django 笔记 - Django Shell
    启动DjangoShell交互式界面,具体命令如下:pythonmanage.pyshell具体实例实例1.直接修改用户密码,无需原密码。在DjangoShell交互式界面下,修改admin用户密码的具体代码如下:fromdjango.contrib.auth.modelsimportUseruser=User.objects.get(username='admin'......