2017-09-27 3 views
1

Le code suivant donne cette erreurImportError: aucun module nommé «modèles

ImportError: aucun module 'modèles' nommé

Je ne sais pas pourquoi. J'essaie de personnaliser mon propre formulaire d'inscription dans django.

L'erreur est en ligne:

from models import CustomUser in forms.py 

forms.py:

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

from models import CustomUser 

class CustomUserCreationForm(UserCreationForm): 

def __init__(self, *args, **kargs): 
    super(CustomUserCreationForm, self).__init__(*args, **kargs) 
    del self.fields['username'] 

class Meta: 
    model = CustomUser 
    fields = ["email",] 

class CustomUserChangeForm(UserChangeForm): 

def __init__(self, *args, **kargs): 
    super(CustomUserChangeForm, self).__init__(*args, **kargs) 
    del self.fields['username'] 

class Meta: 
    model = CustomUser 

register.html:

{% extends "account/base.html" %} 
{% load crispy_forms_tags %} 
{% load i18n %} 

{% block head_title %}{% trans "Signup" %}{% endblock %} 

{% block content %} 
<div class= 'col-md-4 col-md-offset-4'> 
<h1>{% trans "Register" %}</h1> 

<p>{% blocktrans %}Already have an account? Then please <a href="{{ login_url }}">sign in</a>.{% endblocktrans %}</p> 

<form acction="account/register/" method="post"> 
{% csrf_token %} 
{{ form|crispy }} 


<input type="submit" value="Register" /> 
<button type="submit" class= 'btn btn-default'>{% trans "Sign Up" %} &raquo;</button> 
</form> 
</div> 
{% endblock %} 

views.py:

from django.contrib.auth.decorators import login_required 
from django.shortcuts import render, redirect 
from custom_user.forms import CustomUserCreationForm 

#Create your views here 
def home(request): 
    return render(request, "home.html") 

def login(request): 
    c = {} 
    c.update(csrf(request)) 
    return render(request, "login.html", c) 

def auth_view(request): 
    username = request.POST.get['username', ''] 
    password = request.POST.get['password', ''] 
    user = auth.authenticate(username=username, password=password) 

    if user is not None: 
     auth.login(request, user) 
     return HTTpResponseRedirect('account/login') 
    else: 
     return HTTpResponseRedirect('account/login') 


def logout(request): 
    auth.logout(request) 
    return render(request, 'logout.html') 
+0

Où est votre models.py? – blueCat

Répondre

7

vous devez ajouter point

from .models import CustomUser 
# ^^^ 

o mieux utiliser app_name

from custom_user.models import CustomUser 

et pour votre deuxième erreur, vous pouvez simplement ajouter vide excluez au Meta:

class CustomUserChangeForm(UserChangeForm): 

def __init__(self, *args, **kargs): 
    super(CustomUserChangeForm, self).__init__(*args, **kargs) 
    del self.fields['username'] 

class Meta: 
    model = CustomUser 
    exclude =() # THIS ROW 
+0

j'essaie et il apparaît: django.core.exceptions.ImproperlyConfigured: Créer un ModelForm sans l'attribut 'fields' ou l'attribut 'exclude' est interdit; Le formulaire CustomUserChangeForm doit être mis à jour. pouvez-vous expliquer pourquoi j'ai encore une erreur? – nuradilla

+0

mis à jour la réponse, mais pas une bonne idée d'essayer de corriger toutes les erreurs par les commentaires –

+0

merci pour votre aide. je l'apprécie :) – nuradilla