Django拓展auth 用户
完成注册登录登出注销操作
!!!拓展auth用户请务必在 python manage.py migrate
前进行!!!
-
新建一个project:
closetUsers
-
修改
settings.py
#closetUsers/settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'users', # modify 'rest_framework', # modify 'django_filters', # modify ] #update database config DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', #数据库名 'USER': 'test', #用户名 'PASSWORD': 'test123', #用户密码 'HOST': 'localhost', #服务器IP地址 'PORT': '3306', } } #add auth_user_model !after! add the extended user AUTH_USER_MODEL = 'users.User' #pattern: <appName>.<className>
-
新建一个app:
users
-
修改
users/__init__.py
#users/__init__.py import pymysql pymysql.install_as_MySQLdb() #use for django2.x version to link mysql database
-
在
users
底下添加文件urls.py
,修改closetUsers.urls.py
#closetUsers/urls.py from django.contrib import admin from django.urls import path from django.conf.urls import include #add this urlpatterns = [ path('admin/', admin.site.urls), path('', include('users.urls')), #add this, pattern: <appName>.urls ]
-
修改
users.models.py
, 添加拓展的用户类,继承自 AbstractUser, 注:如原来的auth.User 已有的属性不需要再添加#users/models.py from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. class User(AbstractUser): """ save the user info """ style = models.CharField(max_length=30, default='casual', null=True, blank=True) profile = models.URLField(blank=True) phone = models.CharField(max_length=11, null=True, blank=True) def __str__(self): return self.username
-
建表
xxxdeMacBook-Pro:closetUsers xxx$ python3 manage.py migrate xxxdeMacBook-Pro:closetUsers xxx$ python3 manage.py makemigrations users xxxdeMacBook-Pro:closetUsers xxx$ python3 manage.py migrate users
-
重写UserCreationForm, UserChangeForm, 在users 底下新建 form.py文件,其实我只是想要提供一个restful的API而不是建立一个网站,因而应该不需要使用到表单创建,但Django文档中说明拓展User需要重写这两个表单因此还是重写了。
#users/forms.py from django.contrib.auth.forms import UserCreationForm, UserChangeForm from django import forms from .models import User class RegisterForm(