2011-10-25 13 views
21

मैं Django में प्रोग्रामेटिक रूप से उपयोगकर्ता लॉग-इन कैसे कर सकता हूं? मेरे पास उपयोगकर्ता का उपयोगकर्ता नाम और पासवर्ड है। क्या कोई तरीका है कि मुझे उसे लॉग इन करने दें?मैं Django में उपयोगकर्ता को प्रोग्रामेटिक रूप से प्रमाणित कैसे कर सकता हूं?

उत्तर

27

"प्रोग्रामेटिक रूप से" कोई दूसरा तरीका नहीं है। बेशक, यह documented है। जब प्रोग्राम के रूप में उन प्रवेश करने

from django.contrib.auth import authenticate, login 
user = authenticate(username = username, password = password) 
if user is not None: 
    login(request, user) 
+6

पुन अपने संशोधन टिप्पणी: [पीईपी 8] (http://www.python.org/dev/peps/pep-0008/#other-recommendations) के साथ स्पेस को छोड़ते हुए सिफारिश की गई है ' = 'कीवर्ड तर्कों में, लेकिन निश्चित रूप से आप जो कुछ भी चाहते हैं उसे करने के लिए स्वतंत्र हैं। – icktoofay

+1

@icktoofay मुझे अच्छी तरह से पता है कि पीईपी 8 क्या सिफारिश करता है। (यह एक अच्छी सिफारिश नहीं है) –

+2

@CatPlusPlus क्या आप वास्तव में इसकी एक खराब सिफारिश सोचते हैं? आप की अजीब बात है। – jdg

5

alsways सावधान रहना होगा, आप 'user has no attribute "backend" त्रुटि आ सकती है। यदि आप पहले ऐसा नहीं हुआ है तो आपको बैकएंड भी सेट करना होगा। Project that uses this और कुछ नमूना कोड:

def splash_register(request): 
    if request.session.get('beta'): 

    if request.method=='POST': 
     userform=MyUserCreationForm(request.POST) 
     if userform.is_valid(): 
      #username of <30 char is required by Django User model. I'm storing username as a hash of user email 

      user=userform.save(commit=False) 
      user.username=hash(user.email) 
      user.backend='django.contrib.auth.backends.ModelBackend' 
      user.save() 


      username=user.username 
      password=str(userform.cleaned_data['password']) 
      auth.login(request, user) 
      request.session['first_visit']=True 
      return HttpResponseRedirect("/") 
     else: 
      userform=MyUserCreationForm(request.POST) 
      return render_to_response("website/splash_register.html", {'userform':userform}, context_instance=RequestContext(request)) 
    return render_to_response("website/splash_register.html", context_instance=RequestContext(request))  
else: 
    return HttpResponseRedirect('/splash/') 
संबंधित मुद्दे

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