Django表单不是由auth_views.LoginView呈现的

Django表单不是由auth_views.LoginView呈现的,django,login,Django,Login,我有一个问题,Django没有呈现我的登录表单的一个字段。我使用auth_views.LoginView视图进行用户身份验证,即使我放置了模板,其中一个字段也不会出现在我的html中 Url.py: from django.urls import path, re_path from django.contrib.auth import views as auth_views from Turnos import views urlpatterns = [ path('', views.hom

我有一个问题,Django没有呈现我的登录表单的一个字段。我使用auth_views.LoginView视图进行用户身份验证,即使我放置了模板,其中一个字段也不会出现在我的html中

Url.py:

from django.urls import path, re_path
from django.contrib.auth import views as auth_views
from Turnos import views

urlpatterns = [
path('', views.home, name='home'),
使用views.login视图,它可以完美地工作
#path('login/', views.login, name='login'), 
使用auth_views.LoginView.as_视图(template_name='login.html')不会呈现电子邮件字段
path('login/', auth_views.LoginView.as_view(template_name='login.html'), name='login'),
]

views.py:

from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib.auth import login as auth_login
from Turnos.forms import loginForm

def login(request):
    if request.method == 'POST':
        form = loginForm(request.POST)
        if form.is_valid():
            user = form.save()
            auth_login(request, user)
            return redirect('nuevoTurno.html')
    else:
        form = loginForm()
    return render(request, 'login.html', {'form': form})
forms.py:

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

class loginForm(forms.ModelForm):
    email = forms.EmailField(required=True, widget=forms.EmailInput())
    password = forms.CharField(widget=forms.PasswordInput())

    class Meta:
         model = User
         fields = ['email', 'password']
Html:


{%csrf_令牌%}
电子邮件
{%render\u field form.email class+=“form\u control form control lg”placeholder=“email”%}
密码
{%render_字段form.password占位符=“password”类+=“form_控件form控件lg”%}
羡慕
电子邮件字段不随auth_views.loginview一起显示

path('login/', auth_views.LoginView.as_view(template_name='login.html'), name='login'),

对不起,我说的是英语。

看起来您正在使用第三方插件来呈现各个表单字段(我假设您在
base.html
模板中使用了
{%load widget\u tweaks%}

或许可以尝试:

<form action="/your-name/" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit">
</form>

^我还添加了Django向表单字段传递属性的方法。

是的,我使用了widget_调整。测试您的解决方案时,我意识到当我呈现整个表单时,它返回的字段是:用户名和密码。没有电子邮件和密码,我想auth_视图的LoginView视图可以处理这些表单,而不是我定义的表单.Ahhh我明白了-因此您可能会在视图中看到一些验证错误。您可能需要从此处导入的基本
用户
模型创建自己的扩展
用户
模型。如果需要任何帮助,请告诉我!
{% for field in form %}
    <div class="fieldWrapper">
        {{ field.errors }}
        {{ field.label_tag }} {{ field }}
    </div>
{% endfor %}
{{ form.non_field_errors }}
<div class="form-group">
    {{ form.email.errors }}
    <label for="{{ form.email.id_for_label }}">Email</label>
    {{ form.email }}
</div>                                   
email = forms.EmailField(widget=forms.EmailInput(), attrs={'class': "form_control form-control-lg", 'placeholder': "Email"}, required=True, )