[Notas] Django Django Introducción Sección 2: modelo y el fondo

[Notas] Django Django Introducción Sección 2: modelo y el fondo

 

Notas sobre los documentos oficiales y blog de tecnología , información clave extracto, y las notas de registro, ver las rutinas de documentación oficial .

Documento oficial completa: Django Documentación 

Blog recomendado: Django2.2 Tutorial

 

Django Introducción documento oficial: Parte 2: Modelos y al administrador del sitio 

En esta sección se establecerá una base de datos, la creación de su primer modelo, y se centra página de gestión generada automáticamente proporcionada por Django.

directorio

1. modelo

1.1. Marco ORM introdujo

1.2. Configuración de base de datos

1.3. Definición de clase de modelo

1.4. Modelo de activación

Aplicación 1.4.1 Registro

1.4.2. La migración

1.5. Operación modelo API usando la tabla de datos

2. administrador del sitio de administración

2.1. Interfaz de administración de Localización

2.2. Crear una cuenta de administrador

2.3. Registro del modelo Clase

2.4. Gestión de la página personalizada


 

1.  modelo

modelo de Django es el núcleo del proyecto, sino también los sitios web núcleo dinámicos que interactúan con bases de datos.

1.1. Marco ORM introdujo

La base de datos es típicamente operado por escrito instrucción SQL, sino a través del marco ORM no escribir sentencia SQL puede operar la base de datos.

  • Es decir objeto O objeto de clase;
  • Esa relación R relación , es decir, en una base de datos relacionales tablas de datos que significan;
  • Es decir, el mapeo M, un mapeo de medios. En el marco de ORM, que nos ayudan a clases y tablas de datos de un mapa, puede dejarnos los datos correspondientes a la tabla que serán capaces de operar a través de clases y objetos .

marco ORM también tiene una característica que nos puede ayudar a generar automáticamente una tabla en la base de datos de acuerdo a nuestra clase de diseño , lo que elimina la necesidad de que el proceso de construir nuestra propia mesa.

marco ORM de Django incrustado en, no tiene por qué estar orientada directamente la programación de bases de datos, pero la definición de clases de modelo, adiciones y supresiones se completa a través de la operación de búsqueda de clase tabla de datos de modelo y de cambio de objeto (diseño y modelo models.py clase correspondiente a la tabla) .

Las bases de datos usando Django paso de :

  • 1. Definir el models.py clases del modelo
  • 2. Migración
  • 3. Por clases y objetos para las operaciones CRUD de datos

 

1.2. Configuración de base de datos

Si no está utilizando la base de datos SQLite por defecto, es necesario configurar la base de datos para evitar futuros problemas relacionados con la migración de base de datos . Abierta  mysite/settings.py . Este es un módulo de Python que contiene una configuración del proyecto de Django. Django base de datos SQLite predeterminado, como el proyecto real, generalmente utilizan otras bases de datos, tales como la base de datos PostgreSQL.

En mysite/settings.py el segmento de código original relacionado como sigue:

# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

Al utilizar otras bases de datos, a:

  1. Instalar el módulo de operación de base de datos correspondiente;

  2. Y la posición de la configuración de archivos BASES DE DATOS ’default’ser modificados tecla correspondiente, para conectar a la base de datos.

Algunos clave :

  • MOTOR (motor ): puede ser django.db.backends.sqlite3, django.db.backends.postgresql, django.db.backends.mysql, .django.db.backends.oracle
  • NOMBRE (Nombre) : Similar al sistema de gestión de base de datos MySQL para almacenar el contenido del proyecto del nombre de la base de datos . Si está utilizando SQLite, la base de datos será un archivo en su ordenador, en este caso, NAME debe ser la ruta absoluta al archivo, incluyendo el nombre del archivo. El valor por defecto  os.path.join(BASE_DIR, 'db.sqlite3') se almacena en el archivo de base de datos en el directorio raíz del proyecto.

Si no se utiliza SQLite, debe agregar algunos ajustes adicionales, tales como  USER ,  PASSWORD ,  HOST y así sucesivamente. Para más contenido área de configuración de base de datos, consulte el documento oficial: DATABASES .

nota:

  • Si utiliza una base de datos distinta de SQLite , es necesario crear una buena base de datos antes de su uso. Puede utilizar "base de datos de línea de comandos interactiva CREATE DATABASE database_name;para hacer esto" comando. Django no ayudará automáticamente haces este trabajo paso.
  • También asegúrese de que  mysite/settings.py la base de datos proporcionada por el usuario tiene permiso para crear una tabla de base de datos que es "crear la base de datos" de .
  • Si está utilizando SQLite, que no es necesario hacer ninguna preconfigurado - porque la base de datos se crea automáticamente cuando sea necesario.

 

Datos adjuntos:

Editar  mysite/settings.py un archivo, la manera de establecer  TIME_ZONE su propia zona horaria . Por ejemplo, China zona horaria es  Asia / Shanghai en .

Además, tenga en cuenta archivos settings.py  configuración . Esto incluye todas las aplicaciones Django serán habilitadas en su proyecto. aplicacion creó su propia definición debe registrarse aquí .INSTALLED_APPS 

 

 

1.3. Definición de clase de modelo

Ya se pueden escribir aplicaciones web con bases de datos de Django en el primer paso es definir el modelo - es decir, el diseño de la estructura de base de datos y otros metadatos adicionales.

clase del modelo definido en el archivo models.py, heredado de la clase models.Model .

  • Cada uno representando una tabla en la base de datos modelo
  • Cada fila de datos representativos de la tabla de datos de instancia de clase
  • Cada clase representa una tabla de datos de campo variable. Los campos son cada  Field instancia de la clase - por ejemplo, un campo de caracteres se expresa como CharField 
  • El nombre de cada instancia de campo es el nombre del campo
  • Jango es compatible con todas las relaciones de bases de datos comunes: muchos-a-muchos y uno a uno. Según se usa  ForeignKey para definir una relación de clave externa. Nota Para escribir una clave externa en el partido 'multi'.

(Nota: en la clase del modelo no define las columnas de clave principal se agregan automáticamente a la generación, y se aumentará automáticamente.)

 

Por diseño, la definición de un modelo bien en models.py en clase (ver ejemplos de documentos oficiales), entonces también tienen que migrar a fin de generar las hojas de datos correspondientes .

 

nota:

A B que tiene entre dos clases y muchos relación , el uno a muchos relación debe ser definida en el número de clase, los datos correspondientes a la tabla de clave externa:

nombre de atributo = models.ForeignKey ( 'A nombre de clase')

Generación de una tabla de relación correspondiente al formato de atributo de nombre de campo: _id nombre de relación de atributos

 

1.4. Modelo de activación

Después de definir el modelo, el modelo que desea utilizar. En primer lugar tenemos que decirle proyecto de Django, que desee utilizar aplicaciones relacionados con las aplicaciones. A continuación, genera un archivo de migración, la migración.

Aplicación 1.4.1 Registro

Dile proyecto de Django, queremos utilizar aplicaciones relacionados con las aplicaciones. La solicitud de registro.

Añadir aplicaciones a su proyecto, es necesario INSTALLED_APPSpara establecer el incremento en el archivo de configuración de la aplicación a los enlaces de punto . Los documentos oficiales tales como la aplicación de votación, su clase fichero de configuración PollsConfig Shi polls/apps.py, por lo que su punto de ruta polls.apps.PollsConfig. Añadir la ruta a  INSTALLED_APPSla:

# mysite/settings.py

INSTALLED_APPS = [
'polls.apps.PollsConfig',  # 添加到元组中
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

polls.apps.PollsConfig 可以简写为 polls ,即直接写上应用名。

El siguiente paso se puede migrar.

1.4.2. La migración

La migración tiene dos pasos:

  1. Generar archivos de migración : Migración archivos de la tabla creada clases del modelo generadas a partir.
  2. Realizar la migración : Crear una tabla en la base de datos de acuerdo con el primer paso en el archivo de migración generada.
  • Migrar archivos para generar el comando:
python manage.py makemigrations  # 迁移所有

或:
python manage.py makemigrations 应用名

Después de ejecutar el comando para generar el archivo de migración, lo hará directorio de migraciones bajo el directorio de la aplicación generada migración de archivos.

 

  • El mandato de migración es el siguiente:
python manage.py migrate

Cuando se realiza un comando de la migración, el marco de Django nos ayude a leer archivos se migran automáticamente genera la tabla correspondiente en la base de datos.

Nota: comando migrate atravesará INSTALLED_APPStodos los ajustes del proyecto para crear la tabla correspondiente en la base de datos, e imprimir cada pieza de información de acción. Si está interesado, puede introducir su base de datos en la línea de comandos: \dt (PostgreSQL),  SHOW TABLES;(MySQL) o  .schema(SQLite) para listar las tablas Django creó.

 

 

Nota: El nombre por defecto de la tabla de datos generada

<Nombre_apl> _ <nombre_del_modelo>

Nombre de la aplicación _ el nombre del modelo (en minúsculas)
Ejemplo:
polls_choice

 

Resumen: tres pasos cuando se modifican modelo de operación :

  • Models.py el modelo modificado;
  • Ejecutar python manage.py makemigrationscrear un registro de la migración (Migración de archivos) para el cambio;
  • Operación python manage.py migrate, la operación de base de datos de sincronización.

 

1.5. Operación modelo API usando la tabla de datos

Después de la finalización de la tabla de datos de migración, puede entrar a través de la cáscara del proyecto, unas simples operaciones de la API. Si tiene que salir del programa, puede utilizar Ctrl + D acceso directo o introducir quit ().

Comando para entrar en el shell pitón proyecto de línea de comandos (entrada Terminal cuando está en uso PyCharm puede):

python manage.py shell

Después de entrar en la línea de comandos, se puede practicar ejemplos en base a documentos oficiales sobre la  API de base de datos  :

>>> from polls.models import Question, Choice # 导入我们写的模型类
    # 现在系统内还没有questions对象
    >>> Question.objects.all()
    <QuerySet []>

    # 创建一个新的question对象
    # Django推荐使用timezone.now()代替python内置的datetime.datetime.now()
    # 这个timezone就来自于Django的依赖库pytz
    from django.utils import timezone
    >>> q = Question(question_text="What's new?", pub_date=timezone.now())

    # 你必须显式的调用save()方法,才能将对象保存到数据库内
    >>> q.save()

    # 默认情况,你会自动获得一个自增的名为id的主键
    >>> q.id
    1

    # 通过python的属性调用方式,访问模型字段的值
    >>> q.question_text
    "What's new?"
    >>> q.pub_date
    datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>)

    # 通过修改属性来修改字段的值,然后显式的调用save方法进行保存。
    >>> q.question_text = "What's up?"
    >>> q.save()

    # objects.all() 用于查询数据库内的所有questions
    >>> Question.objects.all()
    <QuerySet [<Question: Question object>]>

A continuación volver arriba para aumentar modelo método para resolver, mejorar la legibilidad . Esto permite el uso conveniente de la línea de comandos para llevar, administración de Django se genera de forma automática también utilizar este método para representar objetos.<Question: Question object>可读性低,没什么用。这可以通过 __str__() 

Tales como el aumento de __str__ método para el modelo de preguntas (ver documentación oficial):


class Question(models.Model):
    # ...
    def __str__(self):
        return self.question_text

 

resumen:

Después de importar la clase del modelo,

  • Por: definición de instancia de objeto atributos aumenta, con  objeto de instancia .save ()   ;
  • Obtener datos:
    • Nombre de clase .objects.get (consulta) , será encontrado en los datos almacenados en un objeto, se devuelve el objeto;
    • Buscar: nombre de la clase .objects.all ()
    • relación Machado por una clase de la clase: Un nombre de objeto para una clase de nombre de multi-clase _set.all ()  
    • Una consulta por los muchos tipos de clases: multi-clase atributo de nombre de objeto de relación.
  • Actualización: Supongamos que un objeto de datos tiene una tabla correspondiente, . Atributos de objeto =  , entonces el .save objeto () ;
    • Cuando una asignación de propiedad relación, asignarle un valor del objeto está asociado con él.
  • Eliminar: .Delete Object ()

 

API会自动进行连表操作,通过双下划线分割关系对象。连表操作可以无限多级,一层一层的连接。

Si el error de migración, puede migrar los archivos y bases de datos borrados, reoperación. Pero no puede hacerlo cuando hay datos importantes.

De acuerdo con el documento oficial:

 

2. administrador del sitio de administración

Muchas veces se desea desarrollar no sólo la primera página de los clientes a utilizar, sino también para el personal de back office para proporcionar la interfaz de gestión apropiada. Django puede crear interfaz backend totalmente automatizado de acuerdo con el modelo.

 

módulo de gestión del uso de Django, que seguir los siguientes pasos:

  • 1. Administración de la Interfaz de localización
  • 2. Crear un administrador
  • 3. Registro de clase del modelo
  • 4. Gestión de la página personalizada

2.1. Interfaz de administración de Localización

La localización es el tiempo de visualización de idioma utilizando las costumbres locales.

Abrir el proyecto settings.py archivo, busque la configuración de codificación idioma, la zona horaria y el contenido leído de la siguiente manera:

LANGUAGE_CODE = 'zh-hans' #使用中国语言
TIME_ZONE = 'Asia/Shanghai' #使用中国上海时间

 

2.2. Crear una cuenta de administrador

Creación de sitio de administración de usuario administrador de comandos 's es el siguiente:

python manage.py createsuperuser

A continuación, introduzca el nombre de usuario, correo electrónico, contraseña.

 

la interfaz de administración está activado por defecto. Si el servidor de desarrollo no se inicia, utilice el siguiente comando

Iniciar el servidor :

python manage.py runserver

Después se inicia el servidor, abra el navegador, vaya a su nombre de dominio local "/ / admin" directorio - tales como " http://127.0.0.1:8000/admin/ ." Debería ver la pantalla de inicio de sesión del administrador:

nota:

En un entorno real, para la seguridad del sitio, por lo general, no podemos manejar la exposición ocasional fondo url para los demás, no puede utilizar /admin/un camino tan simple.

Abrir la URL raíz archivos de rutas mysite/urls.py, Modificar admin.site.urls expresión correspondientes, que quieren reemplazar, tales como:

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('control/', admin.site.urls),
]

De esta manera, tenemos acceso para entrar en la interfaz de administración.http://127.0.0.1:8000/control/

 

2.3. Registro del modelo Clase

Después de tan sólo el aterrizaje de una cuenta, verá la página de índice de la página de administración de Django. Actualmente sólo dos contenido editable: grupos y usuarios (y grupos de usuarios). Son django.contrib.authautenticación marco proporcionado por el módulo.

El valor predeterminado no está definido en la aplicación de clase del modelo que hemos creado, en su necesidad de registrar las aplicaciones de archivos en admin.py antes de que puedan ver en el fondo en la gestión y las operaciones CRUD.

Por ejemplo, el problema  Question objeto necesita ser administrado, abra el polls/admin.pyarchivo y añadir la siguiente:

  1. Importar modelo
  2. Inscribirse modelo admin.site.register (nombre del modelo)
from django.contrib import admin
from .models import Question

admin.site.register(Question)

En el navegador para actualizar la página, se puede ver la clase modelo de gestión.

Haga clic en el nombre del modelo, tales como "Preguntas". Pueden entrar en el modelo modificado (tales como preguntas) de la  página de la lista . Esta página muestra todos los modelos (como preguntas) en el objeto de base de datos, se puede modificar aquí.

 

precauciones :

  • Esta forma es el modelo de problema (por ejemplo, ejemplo Question ) generada automáticamente
  • tipos de campo (campo de tiempo  DateTimeField , campo de caracteres  CharField) se genera controles de entrada HTML correspondiente. Cada tipo de campo sabe cómo se manifiestan en la página de administración. Esto es un diferentes tipos de campos modelo (DateTimeField, Charfield) mostrará un diferentes HTML inputtipos de trama .
  • Cada campo de fecha y hora  DateTimeField están escritos en JavaScript botones de acceso directo. Ir a fecha de hoy tienen (Hoy) botón de acceso directo y una interfaz de calendario emergente. tiempo establecido allí ahora (ahora) botones de acceso directo y una lista emergente de tiempo conveniente de uso común en la lista.

 

2.4. Gestión de la página personalizada

La página por defecto aparece en la lista sólo las propiedades de un objeto, y otras propiedades del objeto no aparece, ver muy incómodo. Django ofrece la posibilidad de personalizar la gestión de la página, tales como una lista de páginas de los valores que se desea visualizar.

En los archivos admin.py, clase personalizada que hereda de la clase admin.ModelAdmin .

  • Propiedades list_display indican que atribuye a la pantalla
class QuestionInfoAdmin(admin.ModelAdmin):
    list_display = ['question_text', 'pub_date']
  • Modificar Pregunta código de registro de clase del modelo de la siguiente
admin.site.register(Question, QuestionInfoAdmin)
  • Pregunta actualizar la página de la lista, se visualizan todos los atributos,

 

 

-----fin-----

Publicado 50 artículos originales · ganado elogios 10 · vistas 6598

Supongo que te gusta

Origin blog.csdn.net/qq_23996069/article/details/104654903
Recomendado
Clasificación