基于Django类的视图get\u上下文未找到get请求

2024-05-18 09:39:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编辑django allauth以在设备移动时更改模板,我尝试使用django-mobilerequest.mobilerequest.GET.get('mobile')两者都不起作用url是/accounts/signup/?mobile=true 这是我目前掌握的情况

class LoginView(RedirectAuthenticatedUserMixin,
                AjaxCapableProcessFormViewMixin,
                FormView):
    form_class = LoginForm
    template_name = "account/login.html"
    success_url = None
    redirect_field_name = "next"

    def form_valid(self, form):
        success_url = self.get_success_url()
        return form.login(self.request, redirect_url=success_url)

    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 get_context_data(self, **kwargs):
        ret = super(LoginView, self).get_context_data(**kwargs)
        signup_url = passthrough_next_redirect_url(self.request,
                                                   reverse("account_signup"),
                                                   self.redirect_field_name)
        redirect_field_value = self.request.REQUEST \
            .get(self.redirect_field_name)
        if self.request.GET.get('mobile'):
            self.template_name = 'mobile/sign_up.html'
        ret.update({"signup_url": signup_url,
                    "site": Site.objects.get_current(),
                    "redirect_field_name": self.redirect_field_name,
                    "redirect_field_value": redirect_field_value})
        return ret

Tags: nameselfformurlfieldgetreturnrequest
2条回答

此处有多余的空格符号:

redirect_field_value = self.request.REQUEST \
    .get(self.redirect_field_name) #       ^ space should be removed!

如果您重写.get_template_names(…)而不是.get_context_data(…),您将得到一个更干净的解决方案,并且有机会在解析的精确位置替换模板名称。你知道吗

相关问题 更多 >