Django формы: я не могу получить доступ к формам с домашней страницы - PullRequest
0 голосов
/ 19 октября 2018

Когда я нажимаю кнопки входа или регистрации на главной странице, он переходит к ссылкам, но формы не приходят.Страницы пустуют.В консоли не отображаются ошибки.Когда я удаляю часть {% extends "base_generic.html"%} из login.html, то я получаю доступ к странице входа успешно. Я не могу узнать, где я допустил ошибку.Спасибо за вашу помощь.Извините за мой плохой английский.

    #models.py

class MyUser(AbstractUser):
    is_student = models.BooleanField('student status', default=False)
    is_teacher = models.BooleanField('teacher status', default=False)


class Student(models.Model):

    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, primary_key=True)
    student_no = models.CharField(unique=True, max_length=9, help_text="student number")
    student_name = models.CharField(max_length=50, help_text="student name")
    student_surname = models.CharField(max_length=50, help_text="student surname")

    class Meta:
        permissions = (("can_upload_photo", "Upload Photo Permission"),)

    def __str__(self):
        return self.student_no


# views.py
class StudentSignUpView(CreateView):
    model = MyUser
    form_class = StudentSignUpForm
    template_name = 'registration/signup_form.html'

    def get_context_data(self, **kwargs):
        kwargs['user_type'] = 'student'
        return super().get_context_data(**kwargs)

    def form_valid(self, form):
        user = form.save()
        login(self.request, user)
        return redirect('index.html')


#forms.py
class StudentSignUpForm(UserCreationForm):

    class Meta(UserCreationForm.Meta):
        model = MyUser

    @transaction.atomic
    def save(self):
        user = super().save(commit=False)
        user.is_student = True
        user.save()
        return user

#urls.py
urlpatterns += [
    path('accounts/', include('django.contrib.auth.urls')),
    path('accounts/signup/', views.SignUpView.as_view(), name='signup'),
    path('accounts/signup/student/', views.StudentSignUpView.as_view(), name='student_signup'),
    path('accounts/signup/teacher/', views.TeacherSignUpView.as_view(), name='teacher_signup'),
]


#base_generic.html
            <div class="col-6 text-right">
              {% if user.is_authenticated %}
                <p class="pt-3">Logged in as <strong>{{ user.username }}</strong>. <a href="{% url 'logout' %}">Log out</a>.</p>
              {% else %}
                <a href="{% url 'login' %}" class="btn btn-light" role="button">Log in</a>
                <a href="{% url 'signup' %}" class="btn btn-primary" role="button">Sign up</a>
              {% endif %}
            </div>


#login.html
{% extends 'base_generic.html' %}

{% block content %}
<div class="row">
    <div class="col-lg-4 col-md-6 col-sm-8 col-12">
      <h2>Log in</h2>
      <form method="post" novalidate>
        {% csrf_token %}
        <input type="hidden" name="next" value="{{ next }}">
        {{ form.username }}
        {{ form.password }}
        <button type="submit" class="btn btn-primary">Log in</button>
      </form>
    </div>
  </div>
{% endblock %}


#signup.html
{% extends 'base_generic.html' %}

{% block content %}
  <h2>Sign up for a free account</h2>
  <p class="lead">Select below the type of account you want to create</p>
  <a href="{% url 'student_signup' %}" class="btn btn-student btn-lg" role="button">I'm a student</a>
  <a href="{% url 'teacher_signup' %}" class="btn btn-teacher btn-lg" role="button">I'm a teacher</a>
{% endblock %}

1 Ответ

0 голосов
/ 19 октября 2018

Вам нужно будет включить теги {% block content %} и {% endblock %} в файл base_generic.html.

Когда вы «расширяете» базовый шаблон, эти теги указывают, куда следует вставить дополнительный контент.

См. Наследование шаблона

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