Django: создание промежуточной формы с переключателями, которые перенаправляют пользователя - PullRequest
0 голосов
/ 18 июня 2019

У меня есть проект Django, в котором пользователь регистрируется (это используемая по умолчанию регистрация пользователя), и после регистрации я хочу, чтобы он мог выбрать опцию - W или WP (переключатели).В зависимости от кнопки, которую они выбирают, они будут перенаправлены на соответствующую страницу профиля.(например, profile-W или profile-WP)

Промежуточная страница «дополнительная информация» выглядит следующим образом (html) страница дополнительной информации, показывающая две опции переключателя

Я хотел бы получить некоторые рекомендации о том, как лучше всего этого добиться.Правильно ли я считаю, что первые два шага состоят в том, чтобы: 1) создать форму для страницы с дополнительной информацией; 2) создать представление, которое перенаправит пользователей в профиль.Пока у меня есть это

forms.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import Profile

"""
Step 1-  Create a More Info form
class MoreInfoForm(): 
    choice = forms.ChoiceField(required=True, widget=forms.RadioSelect(
    attrs={'class': 'Radio'}), choices=(('option1','I am a W'),('option2','I am a WP'),))


"""

views.py

""" 
STEP 2 - Create another view    
def moreinforequest(request):
    if request.method =='POST':
        form = UserMoreInfoForm(request.POST) #create a form that has the data that was in request.POST
        if form.is_valid(): #is the form valid (has something been ticked?)
            form.save()#this just saves the account, hashes the password and it's all done for you!
            #username = form.cleaned_data.get('username')
            messages.success(request,f'Account created for {username}, you can now login.')
            return redirect('login')

    else:
        form =UserMoreInfoForm() #if the form input is invalid, render the empty form again

    Pseudocode: If W selected then:
         return Profile-W
                Else
         return Profile-WP
"""

Что яне принципиально понять, как идти о создании дополнительных форм и функциональных возможностей, связанных с ними.Этот пример поможет мне создать остальные функциональные возможности моих форм и представлений.

За ответ я был бы признателен, если бы кто-то мог а) предложить лучшие шаги для достижения цели.выше (создайте промежуточную форму, которая направляет зарегистрированного пользователя либо в профиль 1, либо в профиль 2) и два, лучший способ приблизиться к формам переключателей.

Также будут полезны любые учебные пособия или ссылки, которые имеют непосредственное отношение и будут полезны.

Ниже приведен moreinfo.html - мне нужно дополнить код, добавив к этому.

{% extends "socialmedia/base.html" %}
{% load crispy_forms_tags %}





{% block content %}
<h1 class="sso-title">Nearly there...</h1>
<p>We need a little information from you so we can route you to the correct profile. It'll just take a few
seconds. Fill in the form below</p>

<div class="container">
  <h2>WP or W?</h2>
  <p>Please select one of the options below to confirm your identity. W = LFW. WP e.g R, C, CH, H, GH, L, S, etc.</p>
  <form>
    <div class="radio">
      <label><input type="radio" name="optradio" checked>W</label>
    </div>
    <div class="radio">
      <label><input type="radio" name="optradio">WSP</label>
    </div>
 <div class="form-group">
        <button class="btn btn-outline-info" type="submit">Confirm</button>
    </div>


  </form>
</div>


{% endblock content %}

<!-- below I am overriding the sidebar that is generated in the base.html, by adding something
else, in this case, empty p tags, which means the side bar won't show on this page-->

{% block sidebar %}<p></p>{% endblock sidebar %}
<
...