Par exemple, je peux pointer url '^/accounts/password/reset/$'
vers django.contrib.auth.views.password_reset
avec mon nom de fichier de modèle dans le contexte, mais je pense que je dois envoyer plus de détails sur le contexte.
J'ai besoin de savoir exactement quel contexte ajouter pour chacune des vues de réinitialisation et de modification de mot de passe.
context
soit la bonne chose que vous recherchez!Réponses:
Si vous regardez les sources de django.contrib.auth.views.password_reset, vous verrez qu'il utilise
RequestContext
. Le résultat est que vous pouvez utiliser des processeurs de contexte pour modifier le contexte, ce qui peut vous permettre d'injecter les informations dont vous avez besoin.La liste b a une bonne introduction aux processeurs de contexte .
Edit (il semble que je ne sache pas quelle était la question réelle):
Vous remarquerez que
password_reset
prend un paramètre nommé appelétemplate_name
:Vérifier password_reset pour plus d'informations.
... ainsi, avec un urls.py comme:
django.contrib.auth.views.password_reset
sera appelé pour les URL correspondant'/accounts/password/reset'
à l'argument mot-clétemplate_name = 'my_templates/password_reset.html'
.Sinon, vous n'avez pas besoin de fournir de contexte car la
password_reset
vue prend soin d'elle-même. Si vous voulez voir le contexte dont vous disposez, vous pouvez déclencher uneTemplateSyntax
erreur et parcourir la trace de la pile pour trouver le cadre avec une variable locale nomméecontext
. Si vous souhaitez modifier le contexte, ce que j'ai dit ci-dessus à propos des processeurs de contexte est probablement la voie à suivre.En résumé: que devez-vous faire pour utiliser votre propre modèle? Fournissez un
template_name
argument de mot - clé à la vue lorsqu'elle est appelée. Vous pouvez fournir des arguments de mot-clé aux vues en incluant un dictionnaire comme troisième membre d'un tuple de modèle d'URL.la source
registration/password_reset_email.html
fait contenir des éléments html comme:<div>
,<a>
parce que ce texte envoie uniquementJe recommande vivement cet article.
Je viens de le brancher et ça a marché
http://garmoncheg.blogspot.com.au/2012/07/django-resetting-passwords-with.html
la source
Il vous suffit d'encapsuler les fonctions existantes et de transmettre le modèle que vous souhaitez. Par exemple:
Pour voir cela, jetez un œil à la déclinaison des fonctions des vues intégrées:
http://code.djangoproject.com/browser/django/trunk/django/contrib/auth/views.py#L74
la source
Vous pouvez faire ce qui suit:
Explication:
Lorsque les modèles sont chargés, ils sont recherchés dans votre variable INSTALLED_APPS dans settings.py. L'ordre est dicté par le rang de la définition dans INSTALLED_APPS, donc comme votre application est antérieure à 'django.contrib.auth', votre modèle a été chargé (référence: https://docs.djangoproject.com/en/dev/ref/templates/api /#django.template.loaders.app_directories.Loader ).
Motivation de l'approche:
la source
Une autre solution, peut-être plus simple, consiste à ajouter votre répertoire de modèles de remplacement à l'entrée DIRS du paramètre TEMPLATES dans settings.py. (Je pense que ce paramètre est nouveau dans Django 1.8. Il peut avoir été appelé TEMPLATE_DIRS dans les versions précédentes de Django.)
Ainsi:
Ensuite, placez vos fichiers de modèle de remplacement sous
my_app/templates
. Ainsi, le modèle de réinitialisation du mot de passe remplacé seraitmy_app/templates/registration/password_reset_form.html
la source
La documentation dit qu'il n'y a qu'une seule variable de contexte,
form
.Si vous rencontrez des problèmes de connexion (ce qui est courant), la documentation indique qu'il existe trois variables de contexte:
form
: Un objet Form représentant le formulaire de connexion. Consultez la documentation des formulaires pour en savoir plus sur les objets Form.next
: URL vers laquelle rediriger après une connexion réussie. Cela peut également contenir une chaîne de requête.site_name
: Le nom du site actuel, selon le paramètre SITE_ID.la source
password_reset
opinion.J'utilisais ces deux lignes dans l'url et le modèle de l'administrateur ce que je changeais selon mes besoins
la source