2011-10-25 36 views

Trả lời

27

Không có cách nào khác ngoài "lập trình". Tất nhiên, đây là documented.

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

Re bình luận sửa đổi của bạn: [PEP 8] (http://www.python.org/dev/peps/pep-0008/#other-recommendations) khuyến cáo bỏ qua không gian xung quanh ' = 'trong các đối số từ khóa, nhưng tất nhiên bạn tự do làm bất cứ điều gì bạn muốn. – icktoofay

+1

@icktoofay Tôi biết rõ những gì PEP 8 đề xuất. (Nó không phải là một khuyến nghị tốt) –

+2

@CatPlusPlus Bạn thực sự nghĩ rằng đó là một khuyến nghị xấu? Thats kỳ quặc của bạn. – jdg

5

Alsways cẩn thận khi lập trình đăng nhập người dùng, bạn có thể gặp lỗi ´ user has no attribute "backend". Bạn cũng phải thiết lập backend nếu điều đó không xảy ra trước đó. Project that uses this và một số mẫu mã:

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/') 
Các vấn đề liên quan