J'ai cherché plus d'informations sur la façon de procéder, mais il semble y avoir peu ou pas d'aide dans la documentation.
Essentiellement, je veux faire un nouveau modèle pour l'e-mail d'activation afin que le lien puisse commencer par localhost: 3000 au lieu de localhost: 8000 (j'utilise Vue pour la demande de publication frontend, c'est pourquoi)
J'ai réussi à trouver ceci: https://github.com/sunscrapers/djoser/blob/master/djoser/templates/email/activation.html mais quand je l'ai ajouté à mon propre projet, le modèle Djoser par défaut est toujours utilisé.
Voici à quoi ressemble mon settings.py:
{% block subject %} {% blocktrans %}Account activation on {{ site_name }}{% endblocktrans %} {% endblock subject %} {% block text_body %} {% blocktrans %}You're receiving this email becaus!!!!!!e you need to finish activation process on {{ site_name }}.{% endblocktrans %} {% trans "Please go to the following page to activate account:" %} {{ http }}://{{ localhost:3000 }}/{{ {% url 'registration/activate' uidb64=uid token=token %} }} {% trans "Thanks for using our site!" %}
Mon URL d'activation qui fonctionne si le 8000 est remplacé par 3000 manuellement:
'ACTIVATION_URL': 'registration/activate/{uid}/{token}',
templates / email / activation.html:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
3 Réponses :
Je suppose que vous devez remplacer email.ActivationEmail
, par exemple sur core/email.py
DJOSER = { 'EMAIL': { 'activation': 'core.email.ActivationEmail' } }
et ajoutez-le à vos paramètres.py
from djoser import email class ActivationEmail(email.ActivationEmail): template_name = 'email/activation.html'
Voici les emails qui peuvent être écrasés lien
Merci! cela a fonctionné. Au départ, je l'ai essayé et je n'ai pas pu le faire fonctionner car j'ai placé le fichier d'activation dans un dossier de modèles qui se trouvait dans mon projet et non dans l'application. J'ai fini par faire une pause dans ce problème et je l'ai revisité aujourd'hui. Fonctionne bien maintenant :)
ça marche! Je viens de changer le fichier activation.html
dans ~/.local/lib/python3.5/site-packages/djoser/templates/email
sans aucun autre changement
Bonjour nouveau contributeur! Il serait utile que vous puissiez décrire ce que vous avez fait et pourquoi cela a fonctionné.
Djoser a un modèle d'activation, il l'utilise par défaut, j'ai donc trouvé le modèle dans djoser / templates / email, le nom du fichier est activation.html Je change le contenu du fichier et je l'enregistre. et cela a fonctionné sans aucun changement de code
@Anas Ahmad Ce n'est pas une bonne façon de le faire. Si vous réinstallez Djoser pip install djoser
, le code que vous avez écrit sera écrasé.
ce n'est pas un problème, j'enregistre le html dans les dossiers myproject et je les copie après la réinstallation.
Sans changer les classes d'e-mail Djoser et settings.py, vous pouvez remplacer les modèles html dans le répertoire des modèles de votre projet en utilisant les concepts ici
Vous devez simplement créer un nouveau dossier nommé email dans votre dossier «templates» et y créer des fichiers html avec les noms exacts des modèles d'email que vous souhaitez personnaliser / remplacer.
Par exemple, si vous souhaitez personnaliser l'e-mail de réinitialisation du mot de passe, votre chemin de fichier personnalisé doit ressembler à ceci:
projectName/templates/email/password_reset.html
Voici une liste complète de tous les modèles d'e-mails Djoser que vous pouvez personnaliser