2011-12-22 23 views
6

नहीं भेज रहा है मैं django पासवर्ड रीसेट करने की कोशिश कर रहा हूं लेकिन रीसेट ईमेल नहीं भेजा जाता है।Django पासवर्ड रीसेट। मेल

मुझे पता है कि मेरा ईमेल ठीक तरह से कॉन्फ़िगर किया गया है क्योंकि निम्नलिखित शैल में और मेरे विचारों में से एक में काम करता है (मैं इसे स्वयं को ईमेल प्राप्त करने के लिए उपयोग कर रहा हूं)।

from django.core.mail import send_mail 
send_mail('Subject here', 'Here is the message.', 
      '[email protected]ain.com',['[email protected]'], fail_silently=False) 

मैं अपने रीसेट पासवर्ड को देखने के लिए प्राप्त कर सकते हैं (पासवर्ड/रीसेट/) और के बाद मैं इसे अपने ईमेल देना इसे सही ढंग से पासवर्ड/पुनर्स्थापित करने के लिए मुझे पुनर्निर्देश/किया/ लेकिन यह भेजता नहीं है ईमेल।

यहाँ मेरी urls.py:

<html> 
<head> 
    <link rel="stylesheet" type="text/css" href="/media/css/style_login.css" /> 
    <title>Información de acceso requerida</title> 
</head> 
<body> 
    <div id="wrapper"> 
     <h1>Recuperar password</h1> 
     <p>Utilice este formulario cuando desee recuperar el password para su usuario.</p> 
     {% if form.errors %} 
     <p>No hay un usuario registrado con ese correo electronico.</p> 
     {% endif %} 
     <form method="post" action="{% url django.contrib.auth.views.password_reset_done %}"> 
      {% csrf_token %} 
      {{ form }} 
      <input class="login" type="submit" value="Recuperar" /> 
     </form> 
    </div> 
</body> 

कोई भी विचार:

(r'^password/reset/$','django.contrib.auth.views.password_reset'), 
(r'^password/reset/done/$','django.contrib.auth.views.password_reset_done'), 
(r'^password/reset/confirm/$','django.contrib.auth.views.password_reset_confirm'), 
(r'^password/reset/complete/$','django.contrib.auth.views.password_reset_confirm'), 
(r'^password/change/$','django.contrib.auth.views.password_change'), 
(r'^password/change/done/$','django.contrib.auth.views.password_change_done'), 

यहाँ मेरी password_reset_form.html है? धन्यवाद

+0

कृपया अपनी टिप्पणी नीचे एक वास्तविक उत्तर में बदलें। आप इसे दो दिनों के बाद स्वीकार कर सकते हैं। इससे प्रश्न अनुत्तरित प्रश्न टैब से दूर हो जाएगा। –

+0

कूल, मैं समुदाय के लिए नया हूं और इस तरह की युक्तियाँ वास्तव में सहायक हैं :) – Darkade

+0

आपका स्वागत है, वापस आने और हमें साफ करने में बहुत धन्यवाद! –

उत्तर

7

मुझे यह उल्लेख करना चाहिए कि मैं अपने प्रदाता के रूप में होस्टगेटर का उपयोग कर रहा हूं। तो यह मेरी सेटिंग्स.py

EMAIL_HOST  = 'my-domain.com' 
EMAIL_HOST_PASSWORD = 'my cpanel password' 
EMAIL_HOST_USER = 'my cpanel user' 
EMAIL_PORT  = 25 
EMAIL_USE_TLS = False 
DEFAULT_FROM_EMAIL = '[email protected]' 
SERVER_EMAIL = '[email protected]' 

उपरोक्त सेटिंग्स काम करते हैं!

+1

मेरे पास एक ही समस्या थी, गुम मूल्य DEFAULT_FROM_EMAIL है। यदि यह सेट नहीं है, तो ईमेल नहीं भेजेगा। – Max

3

मेरे मामले में मैंने create_user() का उपयोग कर उपयोगकर्ताओं को बनाया। मेरा विचार था कि खातों का एक गुच्छा बनाना और फिर लोगों को बताएं कि वे पासवर्ड सेट करने के लिए पासवर्ड रीसेट फॉर्म पर जा सकते हैं। मुझे लगता है कि अगर आपको उन्हें 'पासवर्ड का प्रयोग करें' स्वागत 123 "और फिर अपना पासवर्ड संशोधित करना न भूलें तो यह बेकार है।

मुझे पता चला है कि अगर मैं Password='foo' में सफल नहीं हुए या भी अगर मैं पारित कर दिया Password=Nonecreate_user() करने के लिए पासवर्ड रीसेट कर रहे हैं नहीं भेजा। ऐसा इसलिए है क्योंकि Django कभी-कभी यह जानने के लिए एक खाली पासवर्ड का उपयोग करता है कि इसे स्थानीय रूप से प्रमाणित करने की आवश्यकता नहीं है, बल्कि एलडीएपी या इस तरह का उपयोग करें।

तो अब मैं यह कर:

User.objects.create_user(
    user_name, 
    email=user_email, 
    password=os.urandom(32), 
) 

और मैं लोगों को निर्देशित उनके नए खातों के लिए पासवर्ड रीसेट समारोह का उपयोग कर सकते हैं। मुझे लगता है कि यह शानदार होगा अगर मेरे पास create_user में उपयोगकर्ताओं को खाता सक्रियण के लिए स्वचालित रूप से ईमेल भेजने के लिए विकल्प था, हालांकि!

+0

धन्यवाद, मैं इसे समझने की कोशिश कर रहे घंटों के लिए अपने बालों को खींच रहा हूं। बीटीडब्ल्यू, 'पासवर्ड = User.objects.make_random_password()' –

+0

धन्यवाद! एफवाईआई न तो os.urandom() या make_random_password() ने मेरे लिए काम किया, मैंने उपयोग किया: django.contrib.auth.hashers से आयात करें make_password पासवर्ड = make_password (user.objects.make_random_password()) – python1981

+0

कोई भी सोच रहा है या कर रहा है उपयोगकर्ताओं को साइन अप करने की अनुमति देने के लिए तत्काल बंद करें और कस्टम फॉर्म बनाएं।यदि आप व्यवस्थापक अनुमोदन, ईमेल विविधता, या जैसे सामान करना चाहते हैं ... http://django-registration.readthedocs.io/en का उपयोग करें –

संबंधित मुद्दे