2017-01-06 7 views
0

Кто может помочь мне со следующими задачами?Как сохранить ввод формы в сеансе в Django?

У меня есть шаблон регистрации, где пользователи могут зарегистрироваться. Затем они перенаправляются на 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> 

Im используя Django 1.9x и Django-регистрации-Redux

ответ

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

После поля имени пользователя завершается, и форма занесена она идет на второй взгляд, в котором можно взять имя пользователя, который хранится в сессии.

Так же, как это:

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

Оттуда вы можете взять сохраненное имя пользователя и делать то, что вам нужно сделать.