क्या कोई मुझे कोड करने के लिए कह सकता है जहां उपयोगकर्ता अपने स्वयं के पासवर्ड को Django में बदल सकते हैं?
क्या कोई मुझे कोड करने के लिए कह सकता है जहां उपयोगकर्ता अपने स्वयं के पासवर्ड को Django में बदल सकते हैं?
जवाबों:
Django एक उपयोगकर्ता प्रमाणीकरण प्रणाली के साथ आता है। यह उपयोगकर्ता खातों, समूहों, अनुमतियों और कुकी-आधारित उपयोगकर्ता सत्रों को संभालता है। यह दस्तावेज़ बताता है कि चीजें कैसे काम करती हैं।
पासवर्ड अनुभाग देखें
अपनी परियोजना के लिए नेविगेशन जहाँ manage.pyफ़ाइल निहित है
$ python manage.py shell
स्क्रिप्ट के नीचे टाइप करें:
django.contrib.auth.models से उपयोगकर्ता आयात करें
u = User.objects.get (username__exact = 'john')
u.set_password ('नया पासवर्ड')
u.save ()
आप साधारण manage.pyकमांड का भी उपयोग कर सकते हैं :
manage.py changepassword *username*
बस दो बार नया पासवर्ड दर्ज करें।
से बदल रहा है पासवर्ड डॉक्स में अनुभाग।
यदि आपके पास django.contrib.adminअपने में INSTALLED_APPS, आप यात्रा कर सकते हैं: example.com/path-to-admin/password_change/जो अपने पुराने पासवर्ड की पुष्टि करें और दो बार नया पासवर्ड दर्ज करने के लिए एक रूप होगा।
इसके बिना पास जाने की जरूरत है पासवार्ड और रेंटर पासवार्ड दर्ज करें
python manage.py changepassword <username>
or
/manage.py changepassword <username>
खोल का उपयोग करना
python manage.py shell
from django.contrib.auth.models import User
users=User.objects.filter(email='<user_email>')
#you can user username or etc to get users query set
#you can also use get method to get users
user=users[0]
user.set_password('__enter passwd__')
user.save()
exit()
urls.py:
urlpatterns = [
url(r'^accounts/', include('django.contrib.auth.urls')),
टेम्पलेट:
<a href="{% url 'password_change' %}">{% trans "Change password" %}</a>
यहाँ पर प्रलेखित: https://docs.djangoproject.com/en/1.9/topics/auth/default/#use-the-views
यह ट्यूटोरियल दिखाता है कि इसे फ़ंक्शन आधारित विचारों के साथ कैसे किया जाए:
फाइल देखें:
from django.contrib import messages
from django.contrib.auth import update_session_auth_hash
from django.contrib.auth.forms import PasswordChangeForm
from django.shortcuts import render, redirect
def change_password(request):
if request.method == 'POST':
form = PasswordChangeForm(request.user, request.POST)
if form.is_valid():
user = form.save()
update_session_auth_hash(request, user) # Important!
messages.success(request, 'Your password was successfully updated!')
return redirect('change_password')
else:
messages.error(request, 'Please correct the error below.')
else:
form = PasswordChangeForm(request.user)
return render(request, 'accounts/change_password.html', {
'form': form
})
यूआरएल फ़ाइल:
from django.conf.urls import url
from myproject.accounts import views
urlpatterns = [
url(r'^password/$', views.change_password, name='change_password'),
]
और अंत में, टेम्पलेट:
<form method="post">
{% csrf_token %}
{{ form }}
<button type="submit">Save changes</button>
</form>
एक बार जब url पैटर्न जोड़ा जाता है जैसा कि Ciro Santilli के उत्तर में दिखाया गया है, उपयोगकर्ताओं को पासवर्ड बदलने की अनुमति देने का एक त्वरित तरीका उन्हें व्यवस्थापक कार्यों के लिए "स्टाफ एक्सेस" देना है। यदि आप उन्हें किसी समूह में नहीं जोड़ते हैं या उन्हें विशेष अनुमति नहीं देते हैं, तो वे अभी भी अपना पासवर्ड example.com/admin पेज पर जाकर बदल सकते हैं। स्टाफ का उपयोग उन्हें पृष्ठ पर जाने देता है भले ही वह रिक्त हो; ऊपरी दाएं कोने में वे "पासवर्ड बदलें" पर क्लिक कर सकते हैं और व्यवस्थापक फ़ंक्शनलिटी का उपयोग कर सकते हैं।
यह वह कमांड है जिसका मैंने उपयोग किया है, बस उस फेंक में आपको समस्या हो रही है AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'।
python manage.py shell -c "from django.contrib.auth import get_user_model;
User = get_user_model();
u = User.objects.get(username='admin');
u.set_password('password123');
u.save()"
प्रति प्रलेखन , का उपयोग करें:
from django.contrib.auth.hashers import makepassword
ऐसा करने का मुख्य कारण यह है कि Django डेटाबेस में स्टोर करने के लिए हैशेड पासवर्ड का उपयोग करता है।
password=make_password(password,hasher='default')
obj=User.objects.filter(empid=emp_id).update(username=username,password=password)
मैंने इस तकनीक का उपयोग कस्टम उपयोगकर्ता मॉडल के लिए किया है जो मॉडल से लिया गया AbstractUserहै। मुझे खेद है कि अगर मैंने तकनीकी रूप से वर्ग और उपवर्ग को गलत किया, लेकिन तकनीक ने अच्छा काम किया।
@ Ciro के उत्तर के समान, लेकिन मूल प्रश्न के लिए अधिक विशिष्ट (सभी प्रमाणीकरण विचारों को जोड़े बिना):
बस में जोड़ने urlpatternsमें urls.py:
url('^change-password/$', auth_views.password_change, {'post_change_redirect': 'next_page'}, name='password_change'),
ध्यान दें कि post_change_redirectपासवर्ड बदलने के बाद url को रीडायरेक्ट करने के लिए निर्दिष्ट करता है।
फिर, बस अपने टेम्पलेट में जोड़ें:
<a href="{% url 'password_change' %}">Change Password</a>