У меня есть проект 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 %}
<