在Django中创建帐户后无法登录

卡兰瑜伽士

我在Django中创建了登录页面和注册页面。我无法使用在注册过程中设置的用户名和密码登录。尽管我可以使用超级用户的用户名和密码登录。我检查了注册数据是否正在数据库中。但是当我尝试登录时,它显示为“请输入正确的用户名和密码。两个地方都要注意大小写。'。请帮忙

models.py-

class userprofileinfo(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    phone = models.CharField(blank=False,max_length=10)
    hotel_manager = models.BooleanField()
    def __str__(self):
    # Built-in attribute of django.contrib.auth.models.User !
        return self.user.username

views.py-

def HomePage(request):
    if request.user.is_authenticated:
         print('.................................-')
         print(request.user.email)
         return render(request,'homepage.html')
    else:
        print('not online..........................')
        return render(request,'homepage.html')
    return render(request,'homepage.html')

 def register(request):
     registered = False
     if request.method == 'POST':
        user_form = UserCreateForm(data=request.POST)
        profile_form = Formextends(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.user = user
           profile.save()
           registered = True
           return redirect('/login/')
       else:
           print(user_form.errors,profile_form.errors)
     else:
       user_form = UserCreateForm()
       profile_form = Formextends()

     return render(request,'signup.html',
                      {'user_form':user_form,
                       'profile_form':profile_form,
                       'registered':registered})

forms.py-

class UserCreateForm(UserCreationForm):
    class Meta:
        fields = ("username","email","password1","password2")
        # ,"phone","hotel_manager")
        model = get_user_model()

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields["username"].label = "Display name"
        self.fields["email"].label = "Email address"


class Formextends(forms.ModelForm):
    class Meta():
        model = userprofileinfo
        fields = ("phone","hotel_manager")

settings.py-

"""
Django settings for Hotel_Booking_Portal project.

Generated by 'django-admin startproject' using Django 2.2.5.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR,'templates')


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'ok-r813k26$l9fi8a6w3s0udyc#5n#763e@k^(#5p88%h_kd%*'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'firstapp.apps.FirstappConfig',
    'bootstrap4',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'Hotel_Booking_Portal.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [TEMPLATE_DIR],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'Hotel_Booking_Portal.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
PASSWORD_HASHERS = [
    'django.contrib.auth.hashers.Argon2PasswordHasher',
    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    'django.contrib.auth.hashers.BCryptPasswordHasher',
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
]

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
        'OPTIONS':{'min_length':9}
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]



# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/

STATIC_URL = '/static/'

login.html-

<!DOCTYPE html>
{% extends 'base.html' %}
{% load bootstrap4 %}
{% block content %}
&nbsp
&nbsp
&nbsp
&nbsp
    <div class="container">
      <div class="jumbotron">
    <h1>Login here</h1>
<form method="POST" class="form">
  {% csrf_token %}
  {% bootstrap_form form %}
  {% buttons %}
    <button type="submit" class="btn btn-primary">Login</button>
  {% endbuttons %}
</form>
</div>
</div>
{% endblock %}

signup.html-

<!DOCTYPE html>
{% extends 'base.html' %}
{% load bootstrap4 %}

{% load bootstrap4 %}
{% block content %}
&nbsp
  <div class="container">
    <div class="jumbotron">
  <h2>Create account</h2>
  <form method="POST" class="form">
    {% csrf_token %}
    {% bootstrap_form user_form %}
    {% bootstrap_form profile_form %}
      <button type="submit" class="btn btn-primary">Sign Up</button>
  </form>
  </div>
</div>
{% endblock %}
威廉·范昂塞姆

UserCreationForm[GitHub的]将已经设置过密码.set_password(..)确实:

class UserCreationForm(forms.ModelForm):
    # …

    def save(self, commit=True):
        user = super().save(commit=False)
        user.set_password(self.cleaned_data["password1"])
        if commit:
            user.save()
        return user

通过在视图中第二次执行此操作,可以对哈希密码进行哈希处理。因此,身份验证确实不会成功。在视图中,您可以使用以下命令简单地创建用户:

def register(request):
    if request.method == 'POST':
        user_form = UserCreateForm(data=request.POST)
        profile_form = Formextends(data=request.POST)

        if user_form.is_valid() and profile_form.is_valid():
            user = user_form.save()
            profile = profile_form.save(commit=False)
            profile.user = user
            profile.save()
            return redirect('/login/')
        else:
            print((user_form.errors,profile_form.errors))
    else:
        user_form = UserCreateForm()
        profile_form = Formextends()

    return render(
        request,
        'signup.html',
        {'user_form': user_form,
         'profile_form': profile_form,
         'registered': False}
    )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建帐户后登录用户

来自分类Dev

创建帐户后自动登录用户

来自分类Dev

用户创建帐户后如何自动登录?

来自分类Dev

创建帐户后登录用户

来自分类Dev

删除访客用户帐户后无法登录

来自分类Dev

更新后无法登录ubuntu 18.04 vmware工作站15中的帐户

来自分类Dev

使用Django + Djoser创建帐户[“无法创建帐户。”]

来自分类Dev

在流星中,如何防止社交登录无法创建帐户(如果一个帐户不可用)?

来自分类Dev

无法在BOSS Linux中登录Root帐户?

来自分类Dev

无法登录Android Studio中的Google帐户

来自分类Dev

Azure移动服务-社交登录后创建新帐户

来自分类Dev

在Django测试中无法登录刚创建的用户

来自分类Dev

重设密码后,我无法登录我的帐户

来自分类Dev

密码重置后我无法登录我的帐户

来自分类Dev

Magento 1.9.2.2无法创建帐户并在前端登录

来自分类Dev

无法登录到新创建的用户帐户

来自分类Dev

流星帐户无法登录

来自分类Dev

使用自定义用户模型创建超级用户后,无法登录django admin

来自分类Dev

注册后Django Rest Framework无法登录

来自分类Dev

从命令行创建帐户时,无法使用login命令登录到该帐户

来自分类Dev

在登录屏幕中禁用stormpath的“创建帐户”选项

来自分类Dev

无法使用python中的请求登录我的nytimes帐户

来自分类Dev

登录前创建OAUTH帐户

来自分类Dev

关闭后显然无法删除我的用户帐户,因此无法登录

来自分类Dev

关闭后显然无法删除我的用户帐户,因此无法登录

来自分类Dev

在Django中对密码进行哈希处理后,由于密码未加密,我无法登录

来自分类Dev

无法登录 Debian 8 帐户

来自分类Dev

无法创建解析帐户

来自分类Dev

在YII2中渲染登录表单后无法登录

Related 相关文章

  1. 1

    创建帐户后登录用户

  2. 2

    创建帐户后自动登录用户

  3. 3

    用户创建帐户后如何自动登录?

  4. 4

    创建帐户后登录用户

  5. 5

    删除访客用户帐户后无法登录

  6. 6

    更新后无法登录ubuntu 18.04 vmware工作站15中的帐户

  7. 7

    使用Django + Djoser创建帐户[“无法创建帐户。”]

  8. 8

    在流星中,如何防止社交登录无法创建帐户(如果一个帐户不可用)?

  9. 9

    无法在BOSS Linux中登录Root帐户?

  10. 10

    无法登录Android Studio中的Google帐户

  11. 11

    Azure移动服务-社交登录后创建新帐户

  12. 12

    在Django测试中无法登录刚创建的用户

  13. 13

    重设密码后,我无法登录我的帐户

  14. 14

    密码重置后我无法登录我的帐户

  15. 15

    Magento 1.9.2.2无法创建帐户并在前端登录

  16. 16

    无法登录到新创建的用户帐户

  17. 17

    流星帐户无法登录

  18. 18

    使用自定义用户模型创建超级用户后,无法登录django admin

  19. 19

    注册后Django Rest Framework无法登录

  20. 20

    从命令行创建帐户时,无法使用login命令登录到该帐户

  21. 21

    在登录屏幕中禁用stormpath的“创建帐户”选项

  22. 22

    无法使用python中的请求登录我的nytimes帐户

  23. 23

    登录前创建OAUTH帐户

  24. 24

    关闭后显然无法删除我的用户帐户,因此无法登录

  25. 25

    关闭后显然无法删除我的用户帐户,因此无法登录

  26. 26

    在Django中对密码进行哈希处理后,由于密码未加密,我无法登录

  27. 27

    无法登录 Debian 8 帐户

  28. 28

    无法创建解析帐户

  29. 29

    在YII2中渲染登录表单后无法登录

热门标签

归档