使用 django.contrib.messages 重定向 Django 注册激活
Posted
技术标签:
【中文标题】使用 django.contrib.messages 重定向 Django 注册激活【英文标题】:Django-Registration Activation redirect with django.contrib.messages 【发布时间】:2012-05-08 18:15:08 【问题描述】:我正在尝试设置我的 django-registration 激活工作流程,以便当用户点击激活链接时,它使用 django 消息框架django.contrib.messages
将他们重定向到登录页面并带有一条漂亮的小消息
现在,我已经设法使用success_url
参数将用户送回主页:
url(r'activate/(?P<activation_key>\w+)/$',
activate,
'backend': 'registration.backends.default.DefaultBackend', 'success_url':'/',
name='registration_activate',
),
其中'/'
是主页登录视图。我需要在途中的某个地方设置成功消息...也许使用extra_context
字段?
【问题讨论】:
【参考方案1】:Django-registration 是 using signals 来挂钩某些点。在你的情况下,它应该是这样的:
from registration import signals
def register_handler(request, **kwargs):
messages.success(request, 'Thank you!')
signals.user_registered.connect(register_handler)
【讨论】:
【参考方案2】:ilvar 的响应可能是一种更好的方法,但我也设法通过在 django-registration 视图周围包装一个视图来使其工作。
在urls.py
我现在指向我的新观点
url(r'^accounts/activate/(?P<activation_key>\w+)/$',
Custom_Activation_View.as_view(),
'backend': 'registration.backends.default.DefaultBackend',
name='registration_activate'),
在我的views.py
文件中:
class Custom_Activation_View(TemplateView):
template_name='home.html'
def get(self, request, backend, success_url=None, extra_context=None, **kwargs):
messages.success(self.request, 'Activation complete, please login below')
return activate(self.request, backend, template_name=self.template_name, success_url='/', extra_context=None, **kwargs)
【讨论】:
以上是关于使用 django.contrib.messages 重定向 Django 注册激活的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?