Пустая форма не отображается на странице - PullRequest
0 голосов
/ 08 января 2020

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

from django import forms                                     
from django.contrib.auth.forms import UserCreationForm,UserChangeForm
from .models import MyUser

classCustomUserCreationForm(UserCreationForm):
   class Meta:
       model = MyUser
       fields = ('email',)

Чем в файле уровня проекта urls.py я добавил следующий путь

 urlpatterns =[ 
 path('login/',include('authorization.urls'),]

Чем в authorization/urls.py Я создал

from django.urls import path                                  
from .views import login_form                                                                                            
urlpatterns =
[path(' ',login_form,name='login_form'),]       

В моем файле просмотра у меня есть следующий метод, который, если request == GET должен вернуть пустую форму, а если form is_valid (), он перенаправляет на другую страницу

from django.http import HttpResponseRedirect               
from django.shortcuts import render                           
from .form import UserCreationForm

def login_form(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            email = form.cleaned_data('email')
            password = form.cleaned_data('password')
        return HttpResponseRedirect('/thank/')
    else:
        form = UserCreationForm()
    return render(request,'registration/log.html',{'form':form})

И последний кусок log.html

{% extends 'main/base.html' %}                             
<form action="{% url 'login_form' %}" method="post">              
{% csrf_token %}
 {{ form }}                                
<input type="submit" value="Submit">                         
</form>

Но когда я запускаю сервер и открываю http://127.0.0.1:8000/login/ У меня нет ничего исключительного и нет пустой формы

1 Ответ

1 голос
/ 09 января 2020

Вы расширяете шаблон main/base.html в своем файле log.html; Тем не менее, вы не включили туда {% blcok xxx %}.

, поэтому он пропустит все пользовательские html внутри log.html.

В основном, если вы есть что-то вроде:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Document</title>
</head>
<body>
    {% block content %}

    {% endblock %}
</body>
</html>

в вашей базе . html, тогда у вас должно быть следующее для log.html:

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

{% block content %}              
    <form action="{% url 'login_form' %}" method="post">              
    {% csrf_token %}
     {{ form }}                                
    <input type="submit" value="Submit">                         
    </form>
{% endblock %}
...