django自定义用户视图?

时间:2017-03-15 00:01:30

标签: django login django-views views django-login

我定制用户。 所以我需要用电子邮件登录。 user = authenticate(email = email,password = password)似乎无效... 帮我... 让我知道如何修复我的views.py。

这是我的看法。

from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate, login, logout
from django.core.urlresolvers import reverse
from django.shortcuts import render
from LanguageExchange.forms import UserCreationForm,UserChangeForm
def index(request):
  context_dict = {'boldmessage': "Crunchy, creamy, cookie, candy, cupcake!"}
  return render(request, 'LanguageExchange/index.html', context=context_dict)

def register(request):
  # A boolean value for telling the template
  # whether the registration was successful.
  # Set to False initially. Code changes value to
  # True when registration succeeds.
  registered = False

  if request.method == 'POST':
    user_form = UserCreationForm(data=request.POST)
   # change_form = UserChangeForm(data=request.POST)

    # if the two forms are valid..
    if user_form.is_valid():

        user = user_form.save()


        user.set_password(user.password)
        user.save()

    #if change_form.is_valid():    
    #    change = change_form.save()
    #    change.set_password(user.password)
    #    change.user = user
        registered = True

    else:

        print(user_form.errors)

else:

    user_form = UserCreationForm()
   # change_form = UserChangeForm()

return render(request,
            'LanguageExchange/register.html',
            {'user_form': UserCreationForm,
            'registered': registered})

def user_login(request):
  if request.method == 'POST':
     username = request.POST.get('email')
     password = request.POST.get('password')
     user = authenticate(email=email, password=password)

     if user:
        if user.is_active:

            login(request, user)
            return HttpResponseRedirect(reverse('index'))
        else:

            return HttpResponse("Your Rango account is disabled.")
    else:

        print("Invalid login details: {0}, {1}".format(email, password))
        return HttpResponse("Invalid login details supplied.")

else:

    return render(request, 'LanguageExchange/login.html', {})

让我知道如何修复我的views.py。

1 个答案:

答案 0 :(得分:1)

删除

user.set_password(user.password)

注册;

更改

user = authenticate(email=email, password=password)

user = authenticate(username=email, password=password)
在user_login中