django 自定义认证后台

最近想自定义User 结果找了此博客。

https://www.zmrenwu.com/post/50/#测试

在按照些操作的时候遇到了一些问题,记录下....

1、首先要在settings.py 添加参数

 1 AUTH_USER_MODEL = 'system.User'
 2 #system为APP的名名称,User 为Models.py的class名
 3 
 4 AUTHENTICATION_BACKENDS = (
 5     'django.contrib.auth.backends.ModelBackend',
 6     'system.backends.EmailBackend',
 7 )
 8 
 9 LOGOUT_REDIRECT_URL = '/'  # 在这里必须要设置要不然会跳转默认的后台
10 LOGIN_REDIRECT_URL = '/'
11 LOGIN_URL = '/system/login' #这里表示没有未登陆跳转的地址
12 
13 EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
14 
15 STATIC_URL = '/system/static/'
16 
17 STATIC_PATH = 'F:/django/web/system/templates/static'

2、添加相对应的模版(注:这里 是直接引用的admin的认证,所有模板中也引用到了默认的参数)

 1 <form class="form" action="{% url 'login' %}" method="post">
 2                     {% csrf_token %}
 3                     {{ form.non_field_errors }}
 4                     {% for field in form %}
 5                         {{ field.label_tag }}
 6                         {{ field }}
 7                         {{ field.errors }}
 8                         {% if field.help_text %}
 9                             <p class="help text-small text-muted">{{ field.help_text|safe }}</p>
10                         {% endif %}
11                     {% endfor %}
12                     <button type="submit" class="btn btn-primary btn-block">登录</button>
13                     <input type="hidden" name="next" value="{{ next }}"/>
14                 </form>

3、models.py

1 from django.db import models
2 from django.contrib.auth.models import AbstractUser
3 
4 
5 class User(AbstractUser):
6     nickname = models.CharField(max_length=50, blank=True)
7 
8     class Meta(AbstractUser.Meta):
9         pass

4、遇到的问题

错误一:提未jdango_sessions 表不存在 ;(删除文件夹migrations下的文件,然后执行python manage.py makemigrations  python manage.py migrate python manage,py createsuperuser)

错误二:urls.py

#coding:utf-8
from django.conf.urls import url, include
from django.contrib import admin

from users import views

urlpatterns = [
    #url(r'^admin/', admin.site.urls),
    # 别忘记在顶部引入 include 函数
    url(r'^users/', include('users.urls')),
    url(r'^users/', include('django.contrib.auth.urls')),#此处为此乃默认的地址
    url(r'^$', views.index, name='index')
]

在模板直接引用

 1  <form class="form" action="{% url 'login' %}" method="post"> //此处为引用默认的URL
 2                     {% csrf_token %}
 3                     {{ form.non_field_errors }}
 4                     {% for field in form %}
 5                         {{ field.label_tag }}
 6                         {{ field }}
 7                         {{ field.errors }}
 8                         {% if field.help_text %}
 9                             <p class="help text-small text-muted">{{ field.help_text|safe }}</p>
10                         {% endif %}
11                     {% endfor %}
12                     <button type="submit" class="btn btn-primary btn-block">登录</button>
13                     <input type="hidden" name="next" value="{{ next }}"/>
14                 </form>

错误三:注册模板必须放在 templates\registration

 

posted @ 2018-05-10 12:26  unlce-heart  阅读(147)  评论(0)    收藏  举报