@X-yro

Почему не работает форма регистрации Django?

Здравствуйте. У меня есть форма регистрации, но почему-то она не работает.

Вот сам код:

HTML:

{% extends 'WebPortfolioApp/base.html' %}


{% block content %}
<div class="mask d-flex align-items-center h-100 gradient-custom-3">
    <div class="container h-100">
      <div class="row d-flex justify-content-center align-items-center h-100">
        <div class="col-12 col-md-9 col-lg-7 col-xl-6">
          <div class="card" style="border-radius: 15px;">
            <div class="card-body p-5">
              <h2 class="text-uppercase text-center mb-5">Create an account</h2>

                <form method="post">
                    {% csrf_token%}
                    {% for f in form %}
                    <input id="{{ f.id_for_label }}" placeholder="{{ f.label }}" class="form-control form-control-lg" />
                    <label class="form-label" for="{{ f.id_for_label }}"></label>
                    {% endfor %}
                    <button type="submit" class="btn btn-success btn-block btn-lg gradient-custom-4 text-body"></button>
                </form>

            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
{% endblock %}


forms.py:

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


class RegisterUserForm(UserCreationForm):
    username = forms.CharField(label='Login', widget=forms.TextInput(attrs={'class': 'form-input'}))
    email = forms.EmailField(label='Email', widget=forms.EmailInput(attrs={'class': 'form-input'}))
    password1 = forms.CharField(label='Password', widget=forms.PasswordInput(attrs={'class': 'form-input'}))
    password2 = forms.CharField(label='Password again', widget=forms.PasswordInput(attrs={'class': 'form-input'}))

    class Meta:
        model = User
        fields = ('username', 'email', 'password1', 'password2')


views.py :

from django.contrib.auth.forms import AuthenticationForm, UserCreationForm
from django.contrib.auth.views import LoginView
from django.shortcuts import render
from django.urls import reverse_lazy
from django.views.generic import ListView, DetailView, CreateView

from .forms import RegisterUserForm
from .models import PortfolioStructure

class RegisterUser(CreateView):
    form_class = RegisterUserForm
    template_name = 'WebPortfolioApp/register_popup.html'
    success_url = reverse_lazy('login')


urls.py:

from django.urls import path
from django.conf import settings

from .views import RegisterUser

urlpatterns = [
    path('register/', RegisterUser.as_view(), name='register'),
]


И так по конкретнее о самом вопросе. Когда добавляю форму Bootstrap, и просто внутрь этой формы добавляю лейбл в цикле то все ок все работает. Но мне такой способ не подходит так как мне надо еще и инпуты застелизовать. И когда я уже добавляю инпуты вот тогда и начинается нервотрепка. Плейсхолдеры через цикл определяются и берутся из forms.py корректно но вот как я понимаю тип ввода не определяетя. Я так понимаю нужно что-то в type="" передать, но при передаче type="{{ f.label }}" начинают работать только первое и предпоследнее поле а все остальное также не работает. Что можно с этим сделать?
  • Вопрос задан
  • 331 просмотр
Решения вопроса 1
Hivemaster
@Hivemaster
Админ, который хочет программировать
Нужно внимательно сравнить разметку, которую генерирует рендер формы, с той, которую генерируете вы. Ну, и стоит подучить HTML.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы