El proyecto real centro marco Python Django para crear un módulo de usuario

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.

archivo

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,

archivo

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
archivo

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 AbstractUserde 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 AbstractUserde la clase padre AbstractBaseUseren

Sin embargo, AbstractUser类en la celebración de la UserManagerinstancia 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

archivo

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 AbstractUserla clase, a continuación, especifique los nuevos campos añadidos. Después de la adición ejecutar el proyecto, se informará de un error:
archivo

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,

archivo

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! !

Supongo que te gusta

Origin www.cnblogs.com/zyjimmortalp/p/12452635.html
Recomendado
Clasificación