首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在django中,如何在基于类的泛型视图中重定向到?next=url而不是success_url?

在Django中,可以通过重写基于类的泛型视图中的get_success_url方法来实现重定向到?next=url而不是success_url

首先,需要导入django.shortcuts.redirect模块,然后在视图类中重写get_success_url方法。在该方法中,可以通过self.request.GET.get('next')获取到?next=url中的url参数,并将其作为重定向的目标。

以下是一个示例代码:

代码语言:txt
复制
from django.shortcuts import redirect
from django.views.generic import CreateView
from django.urls import reverse_lazy

class MyCreateView(CreateView):
    model = MyModel
    # 其他视图配置...

    def get_success_url(self):
        next_url = self.request.GET.get('next')
        if next_url:
            return next_url
        else:
            return reverse_lazy('success_url_name')

在上述示例中,MyCreateView是一个继承自CreateView的自定义视图类。在get_success_url方法中,首先使用self.request.GET.get('next')获取到?next=url中的url参数,如果存在则返回该参数作为重定向的目标,否则返回success_url的名称(通过reverse_lazy函数获取对应的URL)。

这样,在使用MyCreateView视图类创建对象成功后,如果URL中存在?next=url参数,则会重定向到该参数指定的URL,否则会重定向到success_url指定的URL。

希望以上信息对您有所帮助。如果您需要了解更多关于Django的知识或其他云计算领域的问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django 1.8 官方文档翻译: 3-4-3 使用基于视图处理表单

使用基于视图处理表单 表单处理通常有3 个步骤: 初始GET (空白或预填充表单) 带有非法数据POST(通常重新显示表单和错误信息) 带有合法数据POST(处理数据并重定向) 你自己实现这些功能经常导致许多重复样本代码...(参见图中使用表单)。...为了避免这点,Django 提供一系列通用基于视图用于表单处理。...form_valid()默认实现只是简单地重定向success_url。 模型表单 通用视图在于模型一起工作时会真正光芒四射。...= reverse_lazy('author-list') 注 这里我们必须使用reverse_lazy() 不是reverse,因为该文件导入时URL 还没有加载。

1.8K20

利用Django通用视图(class

框架好处就是,它已经为用户处理了绝大多数场景重复代码,提供了封装好接口,使得我们开发十分方便。...如果你Django设置settings.pyTEMPLATES下配置了'APP_DIRS': True 的话,Django默认会去渲染/project/app_name/templates/app_name...---- 修改视图 接下来就是第二修改视图了。web开发约定俗成规则是,对于查询请求用get,对于修改请求用post。...Django设计时候也遵循了这个原则,所以以下每个view,都具有支持get和post函数。...而在post请求发送过来时候,Django会根据model里field属性去做合法性校验(类型是否正确、字段是否必填等),在校验成功以后重定向success_url

1.5K20

Django DeleteView without confirmation template, but with CSRF attack

所以,我理想删除逻辑应该是这样:点击删除 -> Javascript弹出确认框 -> 用户点击确认 -> Javascript生成一个表单 -> 提交 -> 跳转到success_url。...Django一个基View,其中有一个dispatch方法,所有的请求经由dispatch方法,再根据请求方法具体分发到get、post、delete这样函数里。...那么,一个请求允许哪些方法,是_allowed_methods函数里定义: ? 这个函数意思就是:根据子类定义过方法名确定允许哪些方法。...比如,Django提供BaseUpdateView定义了两个方法get和post: ? 所以,继承这个View一定允许GET和POST两种请求。...Python是个多继承语言,当它还继承了其他辅助(Mixin),还可能会允许其他请求。

95610

django 1.8 官方文档翻译:13-1-2 使用Django认证系统

Django认证框架只存在一种类型用户,因此诸如'superusers'或管理员'staff'用户只是具有特殊属性集user对象,不是不同类型user对象。...login()使用Django会话框架保存用户ID会话。 注意任何在匿名会话设置数据都会在用户登入后会话中都会记住。...把它设置为 None 来把它从 URL 移除,当你想把通不过检查用户重定向没有next page 非登录页面时。...如果提供了 raise_exception 参数,装饰器抛出PermissionDenied异常,使用 the 403 (HTTP Forbidden) 视图不是重定向登录页面。...如果通过POST调用并带有用户提交凭证,它会尝试登入该用户。如果登入成功,该视图重定向next中指定URL

4.6K20

Django模板中使用消息message框架

为此,Django为匿名用户和经过身份验证用户提供了对基于cookie和会话消息传递完全支持。...Djangodjango.contrib.messages中提供了三个内置存储: class storage.session.SessionStorage 该类存储请求会话所有消息。...消息标签 消息标签是消息级别的字符串表示形式,加上直接在视图中添加任何额外标记(有关更多细节,请参阅下面添加额外消息标记)。标记存储字符串,并由空格分隔。...基于图中添加消息 class views.SuccessMessageMixin success_message属性 向基于FormView添加一个success消息属性 get_success_message... {% endif %} {% endfor %} {% endif %} UpdateView中使用message form_valid定义消息添加 基于视图可以定义验证表单函数

2.8K20

python-Django-URL 路由(二)

Django URL路由示例 下面是一个简单Django应用程序示例,它使用URL路由来处理客户端请求。...在这个示例,我们将这些视图函数定义名为views.py文件:: from django.shortcuts import render, get_object_or_404, redirect...如果请求方法是POST,视图函数将获取用户提交文章标题和内容,并创建一个新Post对象,然后将用户重定向新创建文章详细页面。...如果请求方法是POST,视图函数将获取用户提交文章标题和内容,并更新现有的Post对象,然后将用户重定向更新后文章详细页面。...这个视图函数使用Django通用视图CreateView来处理创建新文章表单,然后重定向post_list视图函数,这个视图函数将渲染一个包含所有文章列表HTML模板。

80620

diango之基于内置视图CBS编程

Class-based views是Django为解决建站过程常见呈现模式建立。...django自带view如下表所示: 名 功能 例子 View 基本View, 可以在任何时候使用 见后面详细介绍 RedirectView 重新定向其他URL 将访问"/log-in/"用户重新定向...: 返回给前台对象 8 :param success_url: 操作成功定向地址 9 :param success_msg: 返回成功信息 10...使用mixin可以为class提供额外功能,但它自身却不能单独使用. 具有多继承能力编程语言中, mixin可以为增加额外功能或方法....Django, 我们可以使用mixin为CBVs提供更多扩展性, 当然继承过程, 我们推荐以下原则: Django自身提供View永远在最右边 mixin依次以上view左边 mixin

69330

Django认证系统并不鸡肋反而很重要

传统方法 使用request.user.is_authenticated判断,然后重定向登录页面: from django.conf import settings from django.shortcuts...它处理是这样: 如果用户没有登录,就重定向settings.LOGIN_URL(默认值/accounts/login/),同时把当前绝对路径添加到查询字符串:/accounts/login...login_requiredredirect_field_name参数是指登陆认证成功后重定向页面,默认保存在叫做next查询字符串参数/accounts/login/?...如果修改了密码,数据库密码改变了,session密码没有更新,那么密码就会匹配不上,导致session失效。...但有时我们需要自定义urlURLconf添加自定义url后,再加上相应视图即可,例如: from django.contrib.auth import views as auth_views urlpatterns

1.1K10

【云+社区年度征文】Django认证系统并不鸡肋反而很重要

传统方法 使用request.user.is_authenticated判断,然后重定向登录页面: from django.conf import settings from django.shortcuts...它处理是这样: 如果用户没有登录,就重定向settings.LOGIN_URL(默认值/accounts/login/),同时把当前绝对路径添加到查询字符串:/accounts/login...login_requiredredirect_field_name参数是指登陆认证成功后重定向页面,默认保存在叫做next查询字符串参数/accounts/login/?...如果修改了密码,数据库密码改变了,session密码没有更新,那么密码就会匹配不上,导致session失效。...但有时我们需要自定义urlURLconf添加自定义url后,再加上相应视图即可,例如: from django.contrib.auth import views as auth_views urlpatterns

1.6K70

Django通过next参数实现登录后跳转回到前一页3种方法

实际Python web开发过程,我们经常会碰到这样应用场景。当用户试图访问某个页面或评论某个页面时,我们会要求其先登录,然后在用户登录后自动跳转到用户试图访问页面。...小编我今天就来总结下Django如何实现用户登录后跳转回前一页几种方法,希望对大家有所帮助。...如果你使用自定义用户管理app实现登录,你还需要修改视图中login函数来处理url传递过来next参数(见前文login函数代码),否则不会实现跳转。...当你使用基于视图(Class Based Views, 以class开头)时,你需要按如下方法使用method_decorator这个装饰器。...更多内容见Django基础(10): URL重定向HttpResonseDirect, redirect和reverse方法详解。

2.3K30

python自测100题「建议收藏」

Q79.解释如何在Django设置数据库 Django使用SQLite作为默认数据库,它将数据作为单个文件存储文件系统。...过你有数据库服务器-PostgreSQL,MySQL,Oracle,MSSQL-并且想要使用它不是SQLite,那么使用数据库管理工具为你Django项目创建一个新数据库。...Q81.提到Django模板组成部分。 模板是一个简单文本文件。它可以创建任何基于文本格式,XML,CSV,HTML等。...模板包含在评估模板时替换为值变量和控制模板逻辑标记(%tag%)。 Q82.Django框架解释会话使用? Django提供会话允许您基于每个站点访问者存储和检索数据。...Q83.列出Django继承样式 Django,有三种可能继承样式: 抽象基:当你只希望父包含而你不想为每个子模型键入信息时使用; 多表继承:对现有模型进行子类化,并且需要每个模型都有自己数据库表

5.6K20

python自测100题

Q79.解释如何在Django设置数据库 Django使用SQLite作为默认数据库,它将数据作为单个文件存储文件系统。...过你有数据库服务器-PostgreSQL,MySQL,Oracle,MSSQL-并且想要使用它不是SQLite,那么使用数据库管理工具为你Django项目创建一个新数据库。...Q81.提到Django模板组成部分。 模板是一个简单文本文件。它可以创建任何基于文本格式,XML,CSV,HTML等。模板包含在评估模板时替换为值变量和控制模板逻辑标记(%tag%)。...Q82.Django框架解释会话使用? Django提供会话允许您基于每个站点访问者存储和检索数据。...Q83.列出Django继承样式 Django,有三种可能继承样式: 抽象基:当你只希望父包含而你不想为每个子模型键入信息时使用; 多表继承:对现有模型进行子类化,并且需要每个模型都有自己数据库表

4.6K10

Cookie、Session登陆验证相关介绍和用法

然后我们再根据不同cookieid,服务器上保存一段时间私密资料,“账号密码”等等。   ...服务器端就会发送一组随唯一字符串(比如是 abcdef)浏览器端并暂时储存起来,这个被储存在浏览器东西就叫cookie,服务器端也会自己存储一下用户当前状态,比如 login = True,username...将Session存储在数据库: 如果要将Session存储在数据库,我们需要将 ’django.contrib.sessions’ 加入INSTALLED_APPS 变量。...这种方式下,Session保存到缓存同时还会被保存到数据库,当Django缓存找不到Session时,会从数据库中找到。第二种方式会有一点点性能开销,但是安全性和冗余性更好。 3....要真正知道访怎么用它,需要理解两点: 1、Session 变量是存在服务器内存,应尽量少用,否则服务器会累着 2、Session 就是变量集合,所有使用变量地方理论上都可以使用 Session

2.7K71
领券