You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Django的PasswordResetConfirmView中获取GET参数origin_page

解决Django PasswordResetConfirmView无法获取GET参数的问题

我来帮你分析问题根源,以及对应的解决办法:

问题核心

你当前在get方法里直接赋值self.extra_context的方式,不符合Django类视图的上下文生成逻辑。PasswordResetConfirmView的父类会通过get_context_data方法统一构建模板上下文,你提前设置的extra_context可能被父类逻辑覆盖,或者没有被正确合并到最终的上下文字典中。

另外,建议先做个小验证:在get方法里添加print(self.request.GET),看看控制台输出里是否真的包含origin_page参数——确认参数确实被传递到了请求里。

正确解决方案

1. 重写get_context_data方法传递参数

这是Django类视图添加额外上下文的标准做法,能确保参数被正确注入模板:

from django.contrib.auth import views as auth_views

class PasswordResetConfirmView(auth_views.PasswordResetConfirmView):
    template_name = 'commons/password_reset_confirm.html'
    success_url = '/commons/reset/done/'

    def get_context_data(self, **kwargs):
        # 先获取父类生成的基础上下文
        context = super().get_context_data(**kwargs)
        # 把origin_page参数加入上下文,设置默认值避免模板报错
        context['origin_page'] = self.request.GET.get('origin_page', '')
        return context

修改后,你就能在commons/password_reset_confirm.html模板里直接使用{{ origin_page }}调用这个参数了。

2. 确保重置链接正确携带origin_page参数(若未处理)

如果你的重置链接是从特定页面发起的,需要在生成链接时主动附加origin_page参数。可以通过重写PasswordResetView的get_reset_url方法实现:

class PasswordResetView(auth_views.PasswordResetView):
    def get_reset_url(self, user):
        # 获取父类生成的基础重置链接
        base_url = super().get_reset_url(user)
        # 获取发起重置请求时的origin_page参数
        origin_page = self.request.GET.get('origin_page', '/')
        # 拼接参数到链接末尾
        if '?' in base_url:
            return f"{base_url}&origin_page={origin_page}"
        else:
            return f"{base_url}?origin_page={origin_page}"

记得在urls.py里把默认的password_reset视图替换成你自定义的这个类。

3. 调试排查(如果问题依旧)

如果还是拿不到参数,建议在视图里加调试代码定位问题:

def get_context_data(self, **kwargs):
    print("当前请求GET参数:", self.request.GET)  # 查看参数是否传递过来
    context = super().get_context_data(**kwargs)
    context['origin_page'] = self.request.GET.get('origin_page', '')
    print("最终模板上下文:", context)  # 确认参数是否被加入上下文
    return context

通过控制台输出,你可以快速判断是参数没传过来,还是上下文设置环节出了问题。

内容的提问来源于stack exchange,提问作者E-Kami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:44:24