简体   繁体   English

Django引发异常:ModelForm没有指定模型类

[英]Django throws exception: ModelForm has no model class specified

I´m working with Django Framework and it throws this exception: ModelForm has no model class specified. 我正在使用Django Framework,它引发了此异常:ModelForm没有指定模型类。

This is my code: 这是我的代码:

views.py views.py

from django.contrib.auth import authenticate, login, logout
from django.shortcuts import redirect
from DjangoApp1.forms import login_form
from django.shortcuts import render  #For render templates

def login_view(request):    

    form = login_form()
    context = { 'form': form, 'mensaje':'Logeandose'}

    if request.method == 'POST':        
        form = login_form(request.POST)     
        usuario = request.POST.get('username')
        contrase = request.POST.get('password')
    # Hacer el login
        user = authenticate(username=usuario, password=contrase)
        if user is not None and user.is_active:
            login(request, user)
            context['mensaje'] =  u'Logeado como  %s, contraseña %s' % (usuario, contrase)
        else:
            context['mensaje'] =  u'No usuario  o contraseña incorrecta'

    return render (request, 'DjangoApp1/login.html', context)

And the models.py where I´ve the login form: 还有我登录表单所在的models.py:

models.py models.py

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

class login_form(forms.ModelForm):
    username = forms.SlugField (max_length=8, 
                             label='Usuario: ')
    password = forms.SlugField (max_length=8, 
                        widget=forms.PasswordInput(),  
                        label='Contraseña:',
                        help_text='Hasta 8 letras')

class Meta:
    model  = User
    fields = ('username',  'password')

You need to indent your class Meta because it's part of the model form class definition: 您需要缩进您的class Meta因为它是模型表单类定义的一部分:

class login_form(forms.ModelForm):
    username = forms.SlugField (max_length=8, 
                             label='Usuario: ')
    password = forms.SlugField (max_length=8, 
                        widget=forms.PasswordInput(),  
                        label='Contraseña:',
                        help_text='Hasta 8 letras')
    class Meta:
        model  = User
        fields = ('username',  'password')

Django doc explains this in details. Django文档对此进行了详细说明。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM