2016-08-15 2 views
1

J'utilise Django 1.10. Techniquement ce post concerne Django-registration-redux mais SO ne me laisserait pas créer un nouveau tag pour poster la question. Django-registration-redux ne voit pas les modèles d'enregistrement. J'ai copié tous les modèles dans un dossier appelé "enregistrement" dans mon dossier de modèles. Je n'ai pas d'erreur cependant. Par exemple, lorsque je vais dans/accounts/register, il affiche un formulaire, mais ce n'est pas celui de mon dossier templates/register. Je ne suis pas sûr de ce que je fais mal. Je suis même allé jusqu'à supprimer complètement le dossier templates/registration et je n'ai même pas d'erreur. J'ai lu des messages similaires où les gens devaient déplacer l'inscription vers le haut des applications installées afin qu'il n'utilise pas les formulaires d'administration que j'ai essayé et n'a pas aidé. Jusqu'à présent, rien n'a changé. Tous les modèles étendent la base.Django-Registration-Redux ne voit pas mes modèles/modèles d'enregistrement

Donc je devine que j'ai configuré quelque chose de mal. C'est étrange. Toutes les fonctionnalités sont là mais ça n'utilise pas mes templates. Désolé si c'est une question stupide mais j'apprécierais de l'aide!

pip freeze 
Django==1.10 
django-crispy-forms==1.6.0 
django-registration-redux==1.4 

INSTALLED_APPS = [ 
    'registration', 
    'django.contrib.admin', 
    'django.contrib.sites', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    # third party 
    'crispy_forms', 
    # my apps 
    'todo', 
] 



# Django registration redux settings 
ACCOUNT_ACTIVATION_DAYS = 7 
REGISTRATION_OPEN = True 
REGISTRATION_AUTO_LOGIN = True 
LOGIN_REDIRECT_URL = '/' # The page you want users to arrive at after they successful log in 
LOGIN_URL = '/accounts/login/' 

SITE_ID = 1 

Voici mon /templates/registration/registration_form.html

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

{% block content %} 
<div class='row'> 
<div class='col-sm-6 col-sm-offset-3'> 
<h1>Register for free!</h1> 
<form method="post" action="."> 
    {% csrf_token %} 
    {{ form|crispy }} 

    <input class='btn btn-block btn-primary' type="submit" value="{% trans 'Join' %}" /> 
</form> 
</div> 
</div> 

<hr/> 
<div class='row'> 
<div class='col-sm-6 col-sm-offset-3 text-align-center'> 
<p>Need to <a href="{% url 'auth_login' %}">Login</a>?</p> 
</div> 
</div> 

{% endblock %} 

this is a screenshot showing the form I see at accounts/register

+1

J'ai été en mesure de le faire fonctionner mais ce ne peut pas être le meilleur moyen. Je suis allé dans les paquets de site de mon virtualenv au paquet d'enregistrement de django et j'ai trouvé le dossier de modèle contenant les modèles qu'il affichait réellement. Juste pour tester, j'ai renommé ce dossier de modèle dans l'application d'enregistrement de django réelle à registration_temp et je suppose quand il ne pouvait plus trouver ses propres modèles qui l'ont forcé à voir mes modèles. Y a-t-il un paramètre qui me manque pour indiquer à django d'utiliser ses propres modèles ou les vôtres? J'ai installé en utilisant pip, donc je pense que d'autres personnes viendraient à travers cela aussi. – davesharp

Répondre

0

En settings.py vous devez placer votre application au-dessus de l'application 'd'enregistrement'. Il semble que l'ordre dans lequel les applications sont répertoriées dans le fichier settings.py détermine quels modèles sont utilisés.

+0

désolé pour le retard dans la réponse. Je vous remercie! – davesharp

0

La prochaine fois, essayez de créer un répertoire relatif au nom de votre application dans le dossier des modèles d'applications. Par exemple, si vous avez une application appelée "enregistrer", appelez le dossier "enregistrer" dans le dossier des modèles de votre application, puis mettez tous vos modèles là-bas. Cela empêcherait les modèles nommés index.html dans le dossier des modèles d'application et dans le dossier des modèles de projet principal d'entrer en conflit les uns avec les autres.