【问题标题】:How can I store form input in a session in Django?如何在 Django 的会话中存储表单输入?
【发布时间】:2017-01-07 09:48:08
【问题描述】:

谁能帮助我应对以下挑战?

我有一个用户可以注册的注册模板。然后将它们重定向到带有付款按钮的 URL,并在成功付款时激活。在 HTML 模板中,我将用户名存储在付款按钮内的自定义字段中,该字段用于稍后激活帐户。现在由于用户尚未激活/登录,我还不能像 {{user.username}} 那样调用用户对象。所以我想尝试会话来解决这个问题并在注册期间捕获用户名以检索此会话变量并将其放在我在不同页面上的自定义字段中。但是怎么做?我尝试使用 request.session 但我不确定在哪里放置下面的文件以及如何在 html 模板中调用这个变量。

非常感谢任何建议或帮助!

这是我的 regbackend.py

class MyRegistrationView(RegistrationView):  
    form_class = UserProfileRegistrationForm
def register(self, form_class):
    user_package.username = form_class.cleaned_data['username']

这里是我的 forms.py

class SignUpForm(forms.ModelForm):
class Meta:
    model = SignUp
    fields = ['username', 'email']

这是我的registration.html

<form method="post" action=".">
{% csrf_token %}
{{ form.username|as_crispy_field }}
 <input class="btn btn-success" type="submit" value="{% trans 'Submit' %}" /></form>

最后是我的 HTML 模板,用于在注册后使用支付按钮和自定义字段。

 <form action="some-url" method="post" target="_top">
 <input type="hidden" name="custom" value="{{ session.username? }}">
 </form>

我正在使用 Django 1.9x 和 Django-registration-redux

【问题讨论】:

    标签: django django-registration django-sessions


    【解决方案1】:

    这就是我保持会话以在另一个视图上使用它的方式。

    在您的注册表单上:

    def registration(request):
        initial={'username': request.session.get('username', None)}
        form = RegistrationForm(request.POST or None, initial=initial)
        if request.method == 'POST':
            if form.is_valid():
                request.session['username'] = form.cleaned_data['username']
                return HttpResponseRedirect(reverse('your_checkout_view'))
        return render(request, 'registration.html', {'form': form})
    

    完成用户名字段并提交表单后,它会转到第二个视图,您可以在其中获取存储在会话中的用户名。

    就这样

    def your_checkout_view(request):
        username = request.session['username']
        ...
    

    您可以从那里获取存储的用户名并做您必须做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-31
      • 2019-11-09
      • 2021-12-13
      • 2015-11-20
      • 2020-11-06
      • 2012-09-11
      • 1970-01-01
      • 2017-06-06
      相关资源
      最近更新 更多