将参数传递给Django / Allauth中的覆盖视图

偷运

使用Django 1.4和Allauth,我试图拥有2个不同的注册页面。当我说不同时,我的意思是2个不同的URL和“ html布局”。

这是我到目前为止所做的。它可以工作,但是不会将is_alternate_template变量传递给HTML模板:


在urls.py中:

url(r'^accounts/', include('allauth.urls')),
url(r'^abc/alternate-signup/?$','project.views.alternate_signup'),

在views.py中:

def alternate_signup(request):
    from allauth.account import views as account_views
    is_alternate_template = True
    return account_views.signup(request, locals(), context_instance=RequestContext(request))

在templates / account / signup.html中

{% if is_alternate_template %}
display the alternate layout of the signup page
{% else %}
display the 'standard' layout of the signup page
{% endif %}

在Allauth模块中,这是帐户/视图中注册视图的外观(这是我从Allauth模块覆盖的视图,而不是我自己写的视图):

class SignupView(RedirectAuthenticatedUserMixin, CloseableSignupMixin, FormView):
    template_name = "account/signup.html"
    form_class = SignupForm
    redirect_field_name = "next"
    success_url = None

    def get_success_url(self):
        # Explicitly passed ?next= URL takes precedence
        ret = (get_next_redirect_url(self.request,
                                     self.redirect_field_name)
               or self.success_url)
        return ret

    def form_valid(self, form):
        user = form.save(self.request)
        return complete_signup(self.request, user,
                               app_settings.EMAIL_VERIFICATION,
                               self.get_success_url())

    def get_context_data(self, **kwargs):
        form = kwargs['form']
        form.fields["email"].initial = self.request.session.get('account_verified_email', None)
        ret = super(SignupView, self).get_context_data(**kwargs)
        login_url = passthrough_next_redirect_url(self.request,
                                                  reverse("account_login"),
                                                  self.redirect_field_name)
        redirect_field_name = self.redirect_field_name
        redirect_field_value = self.request.REQUEST.get(redirect_field_name)
        ret.update({"login_url": login_url,
                    "redirect_field_name": redirect_field_name,
                    "redirect_field_value": redirect_field_value })
        return ret

signup = SignupView.as_view()
e4c5

您需要做的是在views.py中创建SignupView的子类,这可能非常简单。

class SignupViewExt(SignupView):

    template_name = "account/signup_alternate.html"

是的,就这么简单,因为只需更改模板即可。然后将您的urls.py更改为

url(r'^abc/alternate-signup/?$',project.views.SignupViewExt.as_view()),

如果要传递其他参数:

url(r'^abc/alternate-signup/?$',project.views.SignupViewExt.as_view(param='some value')),

然后可以将其作为self.param提供给SignupViewExt。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法将POST参数传递给Django视图

来自分类Dev

将formset作为参数传递给Django中的函数

来自分类Dev

将formset作为参数传递给Django中的函数

来自分类Dev

如何将参数传递给 Django 中的表单类?

来自分类Dev

将 id 参数传递给 Django 中的导入类

来自分类Dev

如何将2个参数从模板传递给Django中的视图?

来自分类Dev

sql server:将参数传递给视图

来自分类Dev

Ruby on Rails:将参数传递给视图

来自分类Dev

将2个参数传递给视图

来自分类Dev

MvxCachingFragmentStatePagerAdapter 将参数传递给视图模型

来自分类Dev

如何将“ next”参数传递给Django Auth logout_then_login视图?

来自分类Dev

将参数传递给骨干.js中的trigger()传递的参数

来自分类Dev

将参数传递给CodeIgniter中的index()

来自分类Dev

将参数传递给AngularJs中的服务

来自分类Dev

将函数传递给elisp中的参数

来自分类Dev

将参数传递给yii中的函数

来自分类Dev

将参数传递给Ajax中的函数

来自分类Dev

将值传递给脚本中的参数

来自分类Dev

将参数传递给JavaScript中的URL

来自分类Dev

将参数传递给Ajax中的函数

来自分类Dev

将<input>值传递给Django视图

来自分类Dev

将参数传递给视图,然后传递给Ember.js中的帮助器

来自分类Dev

将参数传递给视图,然后传递给Ember.js中的帮助器

来自分类Dev

如何将obj参数传递给Django Rest Framework中的Permission类函数?

来自分类Dev

将许多参数传递给django游标的一个占位符(IN中的placeholer)

来自分类Dev

将额外的参数传递给Django Rest Framework中的嵌套Serializer

来自分类Dev

如何将非拉丁字符串传递给Django中的url参数?

来自分类Dev

将许多参数传递给django游标的一个占位符(IN中的placeholer)

来自分类Dev

将参数传递给C中的可变参数函数

Related 相关文章

  1. 1

    无法将POST参数传递给Django视图

  2. 2

    将formset作为参数传递给Django中的函数

  3. 3

    将formset作为参数传递给Django中的函数

  4. 4

    如何将参数传递给 Django 中的表单类?

  5. 5

    将 id 参数传递给 Django 中的导入类

  6. 6

    如何将2个参数从模板传递给Django中的视图?

  7. 7

    sql server:将参数传递给视图

  8. 8

    Ruby on Rails:将参数传递给视图

  9. 9

    将2个参数传递给视图

  10. 10

    MvxCachingFragmentStatePagerAdapter 将参数传递给视图模型

  11. 11

    如何将“ next”参数传递给Django Auth logout_then_login视图?

  12. 12

    将参数传递给骨干.js中的trigger()传递的参数

  13. 13

    将参数传递给CodeIgniter中的index()

  14. 14

    将参数传递给AngularJs中的服务

  15. 15

    将函数传递给elisp中的参数

  16. 16

    将参数传递给yii中的函数

  17. 17

    将参数传递给Ajax中的函数

  18. 18

    将值传递给脚本中的参数

  19. 19

    将参数传递给JavaScript中的URL

  20. 20

    将参数传递给Ajax中的函数

  21. 21

    将<input>值传递给Django视图

  22. 22

    将参数传递给视图,然后传递给Ember.js中的帮助器

  23. 23

    将参数传递给视图,然后传递给Ember.js中的帮助器

  24. 24

    如何将obj参数传递给Django Rest Framework中的Permission类函数?

  25. 25

    将许多参数传递给django游标的一个占位符(IN中的placeholer)

  26. 26

    将额外的参数传递给Django Rest Framework中的嵌套Serializer

  27. 27

    如何将非拉丁字符串传递给Django中的url参数?

  28. 28

    将许多参数传递给django游标的一个占位符(IN中的placeholer)

  29. 29

    将参数传递给C中的可变参数函数

热门标签

归档