django: Enregistrement de l'Utilisateur avec l'erreur: no such table: auth_user
J'essaie d'utiliser Django par défaut Auth pour gérer les inscrire et vous connecter. Et je pense que la procédure est assez standard, mais le mien est avec qqch de mal.
mon setting.py:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'books',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
AUTH_USER_MODEL = 'books.User'
mon books.models.py:
class User(AbstractUser):
account_balance = models.DecimalField(max_digits=5, decimal_places=2, default=0)
mon views.py:
from django.contrib.auth.forms import UserCreationForm
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
new_user = form.save()
return HttpResponseRedirect("/accounts/profile/")
else:
form = UserCreationForm()
return render(request, "registration/register.html", {'form': form,})
mon urls.py
urlpatterns = patterns('',
(r'^accounts/login/$', login),
(r'^accounts/logout/$', logout),
(r'^accounts/profile/$', profile),
(r'^accounts/register/$', register),
)
Même j'ai essayé de supprimer la db.sqlite3 et re python manage.py syncdb
, il y a toujours ce message d'erreur:
OperationalError at /accounts/register/
no such table: auth_user
Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/register/
Django Version: 1.7b4
Exception Type: OperationalError
Exception Value:
no such table: auth_user
Quelqu'un peut m'expliquer et me dire ce que je dois faire?
- Ne vous obtenez des erreurs lors syncdb?
- non, ça fonctionne bien: les Opérations à effectuer: Synchroniser unmigrated apps: admin, contenttypes, livres, auth, des séances d'Appliquer toutes les migrations: (aucun) Synchronisation des apps sans migrations: Création de tableaux... de l'Installation de SQL personnalisée... l'Installation d'indices... exécuter les migrations: Pas de migrations nécessaires.
Vous devez vous connecter pour publier un commentaire.
Mise à jour
Vous êtes probablement obtenir cette erreur parce que vous êtes à l'aide de
UserCreationForm
modelform, dansMETA
il contientUser
(django.contrib.auth.les modèles de > l'Utilisateur) comme modèle.Et ici vous êtes en utilisant votre propre personnalisé auth modèle, afin que les tables liées à
User
n'a pas été créé. Donc ici, vous devez utiliser votre propre modelform. où dans les Méta-classe, le modèle devrait être votreUser
(les livres.De l'utilisateur) modèleSi vous avez activé tous les middlewares etc ce sera exécuté à chaque migration et ajouter le manque de tables.
Seule chose que vous devez faire est de :
et après que:
après que vous pouvez sélectionner le nom d'utilisateur et mot de passe.
voici un exemple de sortie:
Cela fonctionne pour django version <1.7:
Initialiser les tables avec la commande
Cela vous permet de désigner un "super utilisateur" ainsi que l'initialisation des tables.
Unknown command: 'syncdb'
Si l'aide personnalisée auth modèle, dans votre UserCreationForm sous-classe, vous aurez à remplacer à la fois la métaclasse et clean_username méthode parce qu'elle fait référence à une codé en dur de l'Utilisateur de la classe (ce dernier jusqu'à ce que django 1.8).
J'ai aussi été confronté au même problème de "no such table: auth_user" quand j'ai essayé de déployer l'un de mes site web de Django dans un environnement virtuel.
Voici ma solution qui a fonctionné dans mon cas:
Dans votre settings.py le fichier où vous avez défini votre paramètre de base de données comme ceci:
localisez simplement votre base de données.base de données sqlite3 ou toute autre base de données que vous utilisez et écrivez un chemin d'accès complet de votre base de données , de sorte que le paramètre de base de données va maintenant ressembler à quelque chose comme cela ;
J'espère que votre problème sera de résoudre maintenant.
python manage.py makemigrations puis → python manage.py migrer il fixe.
Veuillez vérifier combien de python instances sont en cours d'exécution en arrière-plan comme dans windows go--->gestionnaire de tâches et vérifier python instances et de les tuer ou de fin de tâche i.e tuer tous python instances. exécutez de nouveau à l'aide de "py manage.py runserver de la commande".
j'espère qu'il sera beau travail....
Viens de faire le flux suivant
sous
<your project dict>
typedjango-admin createapp <app name>
sous
<app name>/admin.py
Aller à la racine du projet. Puis
$python manage.py migrate
Puis il demande le nom d'utilisateur et le mot de passe
Avant de créer un modèle utilisateur, une première migration doit être effectuée. Puis installer l'application de l'utilisateur de votre modèle et ajouter le AUTH_USER_MODEL.
Ainsi:
et
Sur Django 1.11 j'ai dû le faire en suivant les instructions dans les docs https://docs.djangoproject.com/en/1.11/topics/auth/customizing/#substituting-a-custom-user-model
Si Vous avez fait des changements dans un projet/application puis de l'exécuter:
appeler ces commande