Crear una aplicación de usuario
Todo el proyecto será múltiples aplicaciones necesitan ser almacenados en un paquete separado, por lo que un nuevo directorio de aplicaciones, todas las aplicaciones sub-gestión.
En las aplicaciones a los usuarios usan una aplicación de directorio de paquetes
python ../../manage.py startapp users
Esta vez por ello, necesitamos la aplicación recién creada para registrar django años, pero aquí hemos modificado las aplicaciones de administración de directorios, el valor predeterminado de diferentes maneras, si se ha registrado APP, de acuerdo con la forma anterior será sin duda un error, esta vez podamos primera vista sobre el paquete django trayectoria de guía, introduzca el archivo dev
print(sys.path()) # 输出包的所有搜索路径
['/Users/xxxx/workspace/xxxx/mall/immortal_mall',
'/Users/xxxx/workspace/xxxx/mall',
'/Users/xxxx/workspace/xxxx/mall/venv/lib/python38.zip',
'/Users/xxxx/workspace/xxxx/mall/venv/lib/python3.8',
'/Users/xxxx/workspace/xxxx/mall/venv/lib/python3.8/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8',
'/Users/xxxx/workspace/xxxx/mall/venv/lib/python3.8/site-packages',
'/Applications/PyCharm.app/Contents/helpers/pycharm_matplotlib_backend']
El primer camino es el directorio inicial de nuestro proyecto Django,
Que todos los paquetes debajo de su buscarán su directorio principal, entonces se puede definir un camino para la APP
meiduo_mall.apps.users
Este tiempo de ejecución del programa, que puede funcionar satisfactoriamente. Pero entonces, esta definición de domicilio manera APP demasiados problemas, si la aplicación es mucho, cada uno tiene que escribir de nuevo, puede que no sea enfermo. Así que tenemos que simplificar. Cómo simplificar, a la ruta de búsqueda en el prospecto de ruta absoluta al directorio de aplicaciones directamente, no puede ser Django de búsqueda para comenzar.
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
Así cosa terminada y, a continuación, registrar la APP
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 'immortal_mall.apps.users',
'users'
]
Volver a la página de registro
Lista para registrar la plantilla utilizada, situado en una buena pre-nuevas plantillas de carpeta
El registro se define a los usuarios ver la clase:
class RegisterView(View):
"""用户注册视图类"""
def get(self, request):
'''获取注册页面'''
return render(request, 'register.html')
Registro de enrutamiento definido por el usuario
# 总路由
urlpatterns = [
path('admin/', admin.site.urls),
path('', include(('users.urls', 'users'), namespace='users'))
]
Aquí nos centramos en el sorteo, el primer parámetro es una función incluyen Ganso, el primer argumento no tenía que decir, es especificar los sub-aplicaciones de enrutamiento, el segundo argumento es nombre_apl, tiene que haber nombre_apl desarrollada, si no se especifica este parámetro , escrita en include('users.urls', namespace='users')
una se quejan.
Por supuesto, hay una forma de especificar el archivo especificado en la URL sub-aplicaciones en app_name='users'
.
Crear un nuevo archivo en el directorio de aplicación los usuarios urls.py, y luego escribe la información de enrutamiento
urlpatterns = [
path('register/', views.RegisterView.as_view(), name='register') # name添加命名空间
]
Iniciar la aplicación, el navegador solicita http://127.0.0.1:8989/register/, vuelta a la página de registro.
clase de modelo de usuario
proyecto de Django usando la incorporada en el sistema de autenticación de usuario, primero para saber cuáles son las características.
sistema de autenticación de usuario por defecto de Django
Django viene con una autenticación de usuario cuentas manijas del sistema de usuario, grupos, permisos y sesiones de usuario basadas en cookies, que se encuentra django.contrib.auth
Paquete.
django auth paquete es un built-APP, y como administrador, puede manejar la autenticación y autorización, la certificación es verificar que un usuario no es el sistema de la gente, decidió autorizar un usuario autenticado se puede permitir hacer.
sistema de autenticación de Django proporciona a un usuario de clase modelo de usuario para guardar datos de usuario, sistema de autenticación de usuario es el núcleo del objeto :
class User(AbstractUser):
"""
Users within the Django authentication system are represented by this
model.
Username and password are required. Other fields are optional.
"""
class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'
Userl como si nada, vistazo a los padres AbstractUser
de las cosas en algunos campos que definen el usuario, que incluye una serie de clases de usuario necesarios campo nombre de usuario, contraseña, hay otros campos opcionales, is_active, is_staff, etc., sobre la Autenticación los métodos AbstractUser
de la clase padre AbstractBaseUser
en
Sin embargo, AbstractUser类
en la celebración de la UserManager
instancia que se llama objects
, esta clase proporciona una forma de crear un usuario, como por ejemplo:
user = User.objects.create_user(username, email, password, **extra_fields)
Personalizada clase del modelo del usuario
Este es el formulario de información de registro de usuario, hay un campo de teléfono, pero el modelo de Django está dispuesto en un usuario no tiene este campo, tenemos que definir nosotros mismos.
class User(AbstractUser):
"""自定义用户模型类"""
mobile = models.CharField(max_length=11, unique=True, verbose_name="手机号")
class Meta:
db_table = 'tb_user' # 自定义表名
verbose_name = "用户" # 站点显示
verbose_name_plural = verbose_name # 复数显示
clases del modelo definidos por el usuario necesita para heredar AbstractUser
la clase, a continuación, especifique los nuevos campos añadidos. Después de la adición ejecutar el proyecto, se informará de un error:
Esta es la configuración del objeto django autenticación por defecto, se utiliza un objeto personalizado, pero el objeto no está asignado al sistema,
Así que para volver a especificar el fichero de configuración dev;
AUTH_USER_MODEL = 'users.User'
A continuación, cree un archivo de migración, ejecute el comando de la migración, la creación de una mesa.
✗ python manage.py makemigrations
python manage.py migrate
todos la bienvenida a mi blog Chou Chou, hay más detalles sobre la prueba del combate Oh! !