Django登陆Admin后台错误的解决方案

最近学习使用Django来做网站,但是遇到一个问题,就是无法通过localhost:8000/admin来登陆后台,提示连接错误。但是如果输入错误的用户名的话,会提示你用户名或者密码错误,也就是说你输入正确了,需要跳转的时候就会出问题。在网络上找了不少的解决方案,但是都不能解决我的问题,除了下面这个。

1. 下载pipenv

2. $ pipenv shell

3. (code) $ django-admin startproject emaillogin_project #开始建立一个新的项目

4. (code) $ python manage.py startapp users #开始建立一个新的app, 叫做users

5. 更改项目的设定的文件,也就是setting.py,注意,红色部分就是新增加的

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',

# 3rd party
'allauth',
'allauth.account',
'allauth.socialaccount',

# Local
'users.apps.UsersConfig',
'pages.apps.PagesConfig',

]
# emaillogin_project/settings.py
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

AUTHENTICATION_BACKENDS = (
    # Needed to login by username in Django admin, regardless of `allauth`
    "django.contrib.auth.backends.ModelBackend",

    # `allauth` specific authentication methods, such as login by e-mail
    "allauth.account.auth_backends.AuthenticationBackend",
)

SITE_ID = 1

ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = False
ACCOUNT_SESSION_REMEMBER = True
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_UNIQUE_EMAIL = True
6.(code) $ pipenv install django-allauth #安装这个第三方的插件,我直接pip安装
7. (code) $ python manage.py migrate
8. 项目urls文件里面是这样的。
from django.contrib import admin
from django.urls import path, include # new

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('allauth.urls')), # new
9. 当然还有模块文件夹和模块等等。。。
(code) $ mkdir templates
(code) $ mkdir templates/account
(code) $ touch templates/account/login.html
(code) $ touch templates/account/signup.html
<!-- templates/account/login.html -->
<h2>Log In</h2>
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">Log In</button>
</form>
<!-- templates/account/signup.html -->
<h2>Sign Up</h2>
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">Sign Up</button>
</form>
10. (code) $ python manage.py startapp pages #新建页面app
11. 。。。。太多内容了。其实git上有一个代码,下载下来就能用了。 

https://github.com/wsvincent/django-login-with-email

我用了这个代码以后,刚开始也不行,然后admin神奇的就可以用了。以为是电脑的环境变化了,重新新建一个项目,但是还是不能工作,重新用这个代码,然后还是可以使用。

这个代码的好处不仅是解决了后台的问题,同时给了我们一个新用户注册和登陆的解决方案,其他的内容可以在这个基础上增加即可。

发表评论