2017-01-06 66 views
0

誰能幫助我解決以下挑戰?如何在Django的會話中存儲表單輸入?

我有一個註冊模板,用戶可以註冊。然後他們被重定向到帶有付款按鈕的網址,並在成功付款時激活。在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.9倍和Django的登記,終極版

回答

0

這是我如何保持它用在另一視圖中的會話。

在報名表:

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}) 

一旦用戶名字段完成,形式submited它關係到你可以存儲在您的會話用戶名中的第二個觀點。

就這樣

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

從那裏,你可以存儲的用戶名和你必須做的事情。