проверка переключателя на Django вид из шаблона - PullRequest
0 голосов
/ 23 февраля 2020

Я создаю пользовательскую форму регистрации, и это представление, которое я создал:

def signup(request):
    if request.user.is_authenticated:
        return render(request, 'listings/index.html', {})

    if request.method == 'POST':
        if 'cr-1' in request.POST:
            newuser = User.objects.create_user(username=request.POST.get('email'), email=request.POST.get('email'), password=request.POST.get('password'))
            newpatient = Patient.objects.create(user=newuser)
            user = authenticate(request, username=username, password=password)
            if user is not None:
                auth_login(request, user)
                return redirect('dashboard')
        elif 'cr-2' in request.POST:
            newuser = User.objects.create_user(username=request.POST.get('email'), email=request.POST.get('email'), password=request.POST.get('password'))
            newdoctor = Doctor.objects.create(user=newuser)
            user = authenticate(request, username=username, password=password)
            if user is not None:
                auth_login(request, user)
                return redirect('dashboard')
        else:
            print("##################### NOTHING HAPPENED #####################")

    return render(request, 'dashboard/signup.html', {})

Я специально добавил инструкцию else, которая НИЧЕГО НЕ ПРОИЗОШЛА на консоли, потому что, когда я нажимаю на submit, ничего не происходит. Вот шаблон:

<form class="form-type-material" method="POST" action="{% url 'signup' %}">
            {% csrf_token %}

            <div class="custom-control custom-radio">
              <input type="radio" id="cr-1" name="rg-1" class="custom-control-input" checked>
              <label class="custom-control-label" for="cr-1">Patient/Visiteur</label>
            </div>

            <div class="custom-control custom-radio">
              <input type="radio" id="cr-2" name="rg-1" class="custom-control-input">
              <label class="custom-control-label" for="cr-2">Médecin/Praticien</label>
            </div>

            <div class="form-group">
              <input type="text" class="form-control" id="id_email" name="email" required>
              <label for="email">Adresse email</label>
            </div>

            <div class="form-group">
              <input type="password" class="form-control" id="id_password" name="password" required>
              <label for="password">Mot de passe</label>
            </div>

            <div class="form-group">
              <input type="password" class="form-control" id="id_password-conf" name="password-conf" required>
              <label for="password-conf">Confirmation du mot de passe</label>
            </div>

            <div class="form-group">
              <div class="custom-control custom-checkbox">
                <input type="checkbox" class="custom-control-input" required>
                <label class="custom-control-label">I agree to all <a class="text-primary" href="#">terms</a></label>
              </div>
            </div>

            <br>
            <button class="btn btn-bold btn-block btn-primary" type="submit">Créer et accéder au tableau de bord</button>
          </form>

В чем проблема?

PS: в предыдущей попытке я сделал , если 'cr-1' .checked в request.POST потому что я видел его в другом потоке stackoverflow, но он выдал ошибку: str .... не имеет проверенного метода.

1 Ответ

1 голос
/ 24 февраля 2020

Здесь в вашем шаблоне у вас есть идентификаторы «cr-1» и «cr-2», но при отправке формы имя будет отправлено. то есть здесь у вас есть имя name = "rg-1" Итак, вам нужно проверить

, если 'rg-1' в запросе. POST:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...