2016-04-13 52 views
-3

Django'da özel giriş sayfası yapmak istiyorum. Ben başarıyla üyeyi beyan edebilir ama giriş yapmak istediğinizde o giriş alamadımKimlik doğrulama, özel kimlik doğrulama için çalışmıyor

Benim giriş için views.py. Bu kod yazmak zorunda kayıt için

def login_user(request): 
    context = RequestContext(request) 
    if request.method == 'POST': 
     username = request.POST['username'] 
     password = request.POST['password'] 
     print username 
     print password 

     user = authenticate(username=username, password=password) 
     if user: 
      print "rrrrr" 
      if user.is_active: 
       login(request, user) 
       return HttpResponseRedirect('/success/') 
      else: 
       return HttpResponse("Your Rango account is disabled.") 
     else: 
      print "Invalid login details: {0}, {1}".format(username, password) 
      return HttpResponse("Invalid login details supplied.") 
    else: 
     return render_to_response('login.html', {}, context) 

:

def register(request): 
    context = RequestContext(request) 
    registered = False 
    print "inside register view" 
    if request.method == 'POST': 

     profile_form = ProfileForm(data=request.POST) 
     if profile_form.is_valid(): 

      profile = profile_form.save(commit=False) 

      profile.save() 
      registered = True 
     else: 
      print profile_form.errors 
    else: 
     profile_form = ProfileForm() 

    return render_to_response(
      'register.html', 
      {'profile_form': profile_form, 'registered': registered}, 
      context) 

Benim models.py:

class Profile(models.Model): 
    # user=models.OneToOneField(User) 
    username=models.CharField(max_length=50) 
    first_name=models.CharField(max_length=50) 
    last_name=models.CharField(max_length=50) 
    email=models.EmailField() 
    contact=models.CharField(max_length=50) 
    password=models.CharField(max_length=50) 

    def __str__(self): 
     return self.username or u' 

Benkaynağıve password, e-postayı kabul eder ve iletir, ancak her zaman diğer bölüm: Invalid login details'a gider. koşulunda 'a girilmez. Bunu nasıl çalıştırabilirim?

+0

Bu user' kimlik bilgileri yanlış None' çünkü 'dır' gibi geliyor. Ne tür bir hata görüyorsunuz? 'Print' ifadeleriniz neler gösteriyor? – rnevius

+1

Olası kopyası [Django'da özel giriş yapma] (http://stackoverflow.com/questions/36570082/how-to-make-custom-login-in-django) – Sayse

+0

Lütfen aşağıdaki gibi takip ediniz [önerisi] (http : //stackoverflow.com/a/36570616/3762142) aksi halde "kullanıcıyı nasıl yaratıyorsunuz" kodunu da ekleyebilir, belki birisi sizin sorunuzu yanıtlayacaktır. Parolanızı düz metin olarak kaydettiğinizden şüpheleniyorum ... –

cevap

0

size, böyle bir şey olmalı django.contrib.auth.models.User herhangi bir veri depolamak yok görünüyor:

models.py

class Profile(models.Model): 
    user = models.OneToOneField(User) 
    contact = models.CharField(maX_length = 50) 
    # User class contain other fields that you need. 

forms.py

class UserForm(forms.Form): 
    class Meta: 
     model = User 

class ProfileForm(forms.Form): 
    class Meta: 
     model = Profile 

kayıt kodu:

def register(request): 
    # ... 
    # Your codes here 

    profile_form = ProfileForm(data=request.POST) 

    # Add this line: 
    user_form = UserForm(data=request.POST) 

    if user_form.is_valid() and profile_form.is_valid(): 
     user = user_form.save() 
     user.set_password(user.password) 
     user.save() 

     profile = profile_form.save(commit=False) 
     profile.save() 
     registered = True 
    else: 
     print profile_form.errors 
     print user_forms.errors 
else: 
    profile_form = ProfileForm() 
    user_form = UserForm() 

return render_to_response(
     'register.html', 
     {'profile_form': profile_form, 'user_form':user_form 'registered': registered}, 
     context) 

Sen bulabilirsiniz daha Django resmi Kullanıcı alanları here

+0

, Kullanıcı Modelini kullanmak istediğimde.Sadece Profil formu kullanmak istiyorsanız o zaman nasıl aynı işlemi yapabilirim – vikrant

+0

Django 'kimlik doğrulama/oturum açma/oturum açma yöntemini kullanmanın bir yolunu arıyorsanız, size yukarıdaki yapı açıklamasını teklif ediyorum. Ancak, uygulamanızda kimlik doğrulamasını özelleştirmek isterseniz, [https://docs.djangoproject.com/en/dev/topics/auth/customizing/?hl=tr] adresini görebilirsiniz. –

İlgili konular