Introducción y uso de los archivos predeterminados del marco de Django fácilmente olvidados pero extremadamente importantes

En el campo del desarrollo web Python, el framework Django es como una estrella brillante. Sus características completas, eficientes y seguras lo hacen popular en todo el mundo. Este artículo analizará exhaustivamente los archivos predeterminados del framework Django, y discutirá en profundidad el significado y el uso de cada archivo y su composición, y demostrará a fondo la estructura de archivos y los principios de diseño de este poderoso framework.

Primero, echemos un vistazo a la estructura de directorios después de crear un nuevo proyecto Django:

myproject/
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
  • manage.py: esta es una herramienta de línea de comandos para proyectos de Django que se puede usar para realizar muchas tareas relacionadas con la gestión y el desarrollo de proyectos, como ejecutar servidores, ejecutar pruebas, crear esquemas de bases de datos y más.

  • myproject/__init__.py: Este es un archivo vacío que se usa para decirle al intérprete de Python que el directorio es un paquete de Python.

  • myproject/settings.py: Este archivo contiene todas las configuraciones del proyecto. Cada proyecto de Django tiene su propia configuración donde puede configurar bases de datos, aplicaciones, middleware, plantillas, almacenamiento en caché y más.

  • myproject/urls.py: este archivo define las rutas URL para el proyecto. Al escribir patrones de URL y funciones de vista correspondientes, Django puede enrutar solicitudes HTTP a las vistas apropiadas.

  • myproject/asgi.pyY myproject/wsgi.py: estos dos archivos se usan para configurar el servidor, WSGI es la interfaz de puerta de enlace del servidor web de Python y ASGI es una interfaz de puerta de enlace de servidor asíncrono para procesar solicitudes asíncronas.

gestionar.py

En la estructura del proyecto de Django, manage.pyjuega un papel muy importante. Es una herramienta de línea de comandos que le permite interactuar con proyectos de Django de varias maneras. Exploremos este archivo en profundidad y sus usos principales.

Primero, Django crea automáticamente un archivo cuando creamos un nuevo proyecto Django manage.py. Se encuentra en el directorio raíz del proyecto y su objetivo principal es ser una utilidad de línea de comandos que encapsule la django-admin.pyfuncionalidad del proyecto y que también contenga algunos comandos adicionales específicos del proyecto.

Veamos un manage.pycontenido de archivo típico:

#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys

def main():
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)

if __name__ == '__main__':
    main()

Podemos ver que en manage.pyel archivo, el módulo de configuración de Django se define como una variable de entorno DJANGO_SETTINGS_MODULEcon un valor predeterminado de 'myproject.settings'. A continuación, intenta importar django.core.managementdesde él execute_from_command_line, que se utiliza para realizar tareas de gestión de línea de comandos.

Veamos algunos manage.pyusos comunes:

Ejecutar el servidor de desarrollo : al desarrollar localmente, a menudo necesitamos ejecutar el servidor de desarrollo que viene con Django. Puedes runserverhacer esto con el comando:

python manage.py runserver

Esto iniciará el servidor de desarrollo, que está activado de forma predeterminada 127.0.0.1:8000. Puede visitar esta dirección en su navegador para ver su sitio web.

Migraciones de base de datos : Django tiene una API de abstracción de base de datos muy poderosa que puede manejar muchas tareas relacionadas con la base de datos. Por ejemplo, cuando cambiamos el modelo (modelos), debemos aplicar estos cambios a la base de datos, lo que requiere la migración de la base de datos. He aquí cómo hacerlo manage.pycon:

python manage.py makemigrations  # 创建迁移文件
python manage.py migrate  # 应用迁移至数据库

Crear un superusuario : cuando necesitamos acceder al fondo de administración de Django, necesitamos crear un superusuario. Esto lo podemos hacer con el siguiente comando:

python manage.py createsuperuser

Django Shell : manage.pytambién se proporciona un shell de Python interactivo, pero este shell se ejecuta en el entorno de Django. Esto significa que puede importar sus modelos, vistas, configuraciones, etc. en este shell, lo cual es muy útil para probar y depurar:

python manage.py shell

En el uso diario de Django, manage.pyes una herramienta muy importante. Hace que la interacción con los proyectos de Django sea muy fácil y encapsula muchas tareas comunes. Aprende a usarlo manage.py, y tu desarrollo de Django será más fácil.

iniciar .py

En Python, __init__.pyel archivo tiene una posición importante, y su existencia le permite a Python reconocer la carpeta como un paquete (package). Este concepto es especialmente importante en la programación modular de Python, que nos permite organizar el código de forma más estructurada y proporciona una mejor gestión del espacio de nombres. Ahora, exploremos en profundidad __init__.pyqué hace y cómo usarlo.

Primero, veamos el __init__.pyarchivo más simple, un archivo vacío. En un proyecto de Python, puede ver muchos de estos archivos. Se encuentran en el directorio del paquete y se denominan __init__.py.

# mypackage/__init__.py

La existencia de este archivo vacío significa que el intérprete de Python tratará el directorio en el que se encuentra como un paquete (paquete), y este paquete puede contener otros módulos (módulo) o subpaquetes (subpaquete). Por ejemplo, si tenemos la siguiente estructura de proyecto:

mypackage/
    __init__.py
    module1.py
    module2.py

En este caso, podemos importar el módulo así:

from mypackage import module1, module2

Además de marcar carpetas como paquetes, __init__.pyexisten otros usos importantes. En términos generales, __init__.pyse utiliza para almacenar código de inicialización a nivel de paquete o definir un alias para facilitar la importación. Por ejemplo, podemos __init__.pyimportar nuestros módulos en , para que estén directamente disponibles al importar el paquete:

# mypackage/__init__.py

from . import module1, module2

Luego podemos importar el paquete directamente sin importar el módulo por separado:

import mypackage

# 我们可以直接使用mypackage.module1,而不需要单独导入module1
mypackage.module1.some_function()

Además, __init__.pyse puede utilizar para definir __all__variables. __all__La variable es una lista de cadenas que definen qué módulos se importarán al importar * del paquete.

# mypackage/__init__.py

__all__ = ['module1', 'module2']

Ahora, cuando importamos así:

from mypackage import *

Solo module1y module2serán importados, otros módulos no lo serán.

En general, __init__.pyes una parte clave de la estructura del paquete de Python, lo que nos permite organizar y administrar mejor nuestro código. Comprender cómo funciona y cómo usarlo puede ayudarnos a escribir un código más modular y mantenible.

configuración.py

El framework Django es un framework web conocido por su modularidad y flexibilidad, muchos aspectos son configurables, y estas configuraciones se concentran en settings.pyarchivos. En un proyecto de Django, settings.pyel archivo es crucial, contiene toda la información de configuración necesaria para que se ejecute el proyecto. Ahora, exploremos este archivo en profundidad y sus usos principales.

El archivo de un nuevo proyecto de Django settings.pycontiene muchas configuraciones predeterminadas, que son adecuadas para la mayoría de las situaciones, pero puede modificar estas configuraciones según sus necesidades. Estos son algunos de los ajustes más importantes:

DEBUG : esta configuración le dice a Django si debe ejecutarse en modo de depuración. En un entorno de desarrollo, generalmente establecemos esto en True, de modo que cuando algo sale mal, Django mostrará mensajes de error detallados. Sin embargo, en un entorno de producción, deberíamos establecerlo en False.

DEBUG = True

INSTALLED_APPS : esta configuración define todas las aplicaciones en el proyecto. Cada aplicación es un paquete de Python que contiene algunas vistas, modelos, plantillas, etc. Cuando creamos una nueva aplicación o instalamos una aplicación de terceros, la aplicación debe agregarse a esta lista.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Add your apps here
    'myapp',
]

MIDDLEWARE : esta configuración define un conjunto de clases de middleware que desempeñan un papel importante en el procesamiento de solicitudes y respuestas. Puede agregar su propio middleware o modificar el orden de esta lista para cambiar el orden de ejecución del middleware.

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

BASES DE DATOS : Esta configuración define la configuración de su base de datos. Django usa ORM (Mapeo relacional de objetos) para manejar las operaciones de la base de datos, y puede usar cualquier backend de base de datos compatible con Django, como SQLite, PostgreSQL, MySQL, etc.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

PLANTILLAS : Esta configuración define la configuración de plantillas de Django, incluida la ubicación de plantillas, motores de plantillas y más.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        ...
    },
]
  1. STATIC_URL y STATIC_ROOT : estas dos configuraciones se usan para configurar cómo se manejan los archivos estáticos. STATIC_URLDefine el prefijo de URL de los archivos estáticos y STATIC_ROOTdefine la ubicación de almacenamiento de los archivos estáticos.
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

Los anteriores son solo settings.pyalgunos ajustes básicos en el archivo. De hecho, hay más elementos de configuración en este archivo. Puede ajustar estas configuraciones según sus necesidades. Comprender settings.pycómo funcionan los archivos y cómo usarlos es un paso clave para dominar Django.

urls.py

En el marco web de Django, urls.pyel archivo es una parte muy crítica, es responsable de la configuración del enrutamiento de URL, asegurando que la URL solicitada por el usuario pueda ser mapeada correctamente a la función o clase de vista correspondiente. En esta publicación, profundizaremos en urls.pyla estructura y el uso del archivo.

En un proyecto Django recién creado, urls.pylos archivos se encuentran en el directorio raíz del proyecto. Este archivo contiene una urlpatternslista denominada , cada elemento de la lista es una llamada de función path()o re_path(), y esta llamada de función define la relación de asignación entre un patrón de URL y una vista.

Aquí hay un urls.pyarchivo simple:

from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/', views.hello_world),
]

En este archivo, primero django.urlsimportamos path()la función del módulo y luego definimos urlpatternsla lista. Esta lista contiene dos patrones de URL. El primer patrón es que 'admin/'está mapeado a la vista de administración integrada de Django, el segundo patrón es que 'hello/'está mapeado a nuestra propia hello_worldvista definida.

path()La función acepta dos parámetros obligatorios, el primero es una cadena de patrón de URL y el segundo es una función o clase de vista. También puede aceptar un tercer parámetro opcional, que es un diccionario que se puede usar para pasar parámetros adicionales para la vista.

Además de path()funciones, django.urlsel módulo también proporciona re_path()funciones que nos permiten definir patrones de URL usando expresiones regulares. Por ejemplo, el siguiente código define un patrón de URL que coincide con cualquier número:

from django.urls import re_path
from . import views

urlpatterns = [
    re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
]

En este ejemplo, la cadena de patrón de URL es una expresión regular que (?P<year>[0-9]{4})dice hacer coincidir un número de cuatro dígitos y nombrarlo year. En la función de vista year_archive, podemos yearobtener este valor a través de parámetros.

urls.pyEl archivo es una parte importante del proyecto Django, mapea la URL solicitada por el usuario a la vista correspondiente para manejar la solicitud del usuario. Comprender su principio de funcionamiento y uso puede ayudarnos a utilizar mejor el marco Django para crear aplicaciones web.

asgi.py

ASGI, el nombre completo de Asynchronous Server Gateway Interface, es una interfaz estándar de Python para crear aplicaciones web asíncronas. A partir de Django 3.0, Django comenzó a admitir ASGI, lo que nos permite usar la programación asíncrona en Django para mejorar el rendimiento de las aplicaciones web. En un proyecto Django, asgi.pyel archivo es el archivo de configuración ASGI, que define la aplicación ASGI y configura el middleware y el enrutamiento. Ahora, echemos un vistazo más profundo al asgi.pyarchivo y su uso principal.

Primero, echemos un vistazo a los archivos en un proyecto Django recién creado asgi.py:

"""
ASGI config for myproject project.

It exposes the ASGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/3.1/howto/deployment/asgi/
"""

import os

from django.core.asgi import get_asgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

application = get_asgi_application()

En este archivo, primero configuramos la variable de entorno DJANGO_SETTINGS_MODULE, que le dice a Django qué archivo de configuración debe usar. Luego, llamamos get_asgi_application()a la función para obtener una aplicación ASGI y asignarla a applicationla variable. Esta applicationvariable es el punto de entrada de la interfaz del servidor ASGI, y el servidor ASGI usará esta variable para iniciar nuestra aplicación Django.

Este asgi.pyarchivo básico es suficiente para que nuestra aplicación Django se ejecute en un servidor ASGI como Daphne o Uvicorn. Sin embargo, el verdadero poder de ASGI radica en su naturaleza asíncrona. Podemos aprovechar esta función agregando middleware y enrutamiento asíncronos.

Por ejemplo, podemos agregar un middleware asíncrono para manejar conexiones Websocket:

from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
import myapp.routing

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

application = ProtocolTypeRouter({
    "http": get_asgi_application(),
    "websocket": AuthMiddlewareStack(
        URLRouter(
            myapp.routing.websocket_urlpatterns
        )
    ),
})

En este ejemplo, creamos una ProtocolTypeRouterinstancia que puede enrutar solicitudes según el tipo de protocolo. Para solicitudes HTTP, usamos la aplicación Django original; para solicitudes Websocket, usamos una pila de middleware y un enrutador de URL. AuthMiddlewareStackEs un middleware que proporciona una función de autenticación y URLRouterse utiliza para enrutar las solicitudes de Websocket.

En general, asgi.pyel archivo es el punto de entrada para la programación asíncrona de Django, que proporciona una forma de configurar aplicaciones ASGI, incluida la adición de middleware y enrutamiento. Comprender su principio de funcionamiento y uso puede ayudarnos a utilizar mejor la programación asincrónica en Django y mejorar el rendimiento de las aplicaciones web.

wsgi.py

WSGI, o Web Server Gateway Interface, es una interfaz común entre las aplicaciones de Python y los servidores web. En Django, wsgi.pyun archivo es un archivo de configuración para la interfaz WSGI que permite que un servidor web interactúe con una aplicación Django. En esta publicación, profundizaremos en wsgi.pyla estructura y el uso del archivo.

En un proyecto Django recién creado, wsgi.pylos archivos se encuentran en el directorio raíz del proyecto. Consta principalmente de dos partes: establecer variables de entorno DJANGO_SETTINGS_MODULEy definir aplicaciones WSGI. Aquí hay wsgi.pyun ejemplo típico de un archivo:

"""
WSGI config for mysite project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/
"""

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')

application = get_wsgi_application()

En este archivo, os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')esta línea de código establece una variable de entorno DJANGO_SETTINGS_MODULE, que le dice a Django qué archivo settings.py debe usar.

Y application = get_wsgi_application()esta línea de código define una aplicación WSGI. get_wsgi_application()La función devuelve una aplicación WSGI que puede procesar solicitudes HTTP y generar respuestas HTTP. Aquí applicationhay una variable global que es el punto de entrada para la interfaz del servidor WSGI.

Luego, puede usar un servidor WSGI para ejecutar su aplicación Django. Por ejemplo, con Gunicorn, puede ingresar el siguiente comando en la línea de comando:

gunicorn mysite.wsgi

Este comando inicia un servidor Gunicorn y carga las variables mysite.wsgien el módulo applicationcomo una aplicación WSGI.

En conjunto, wsgi.pyel archivo es un archivo de configuración importante de Django que define la interfaz de la aplicación Django con el servidor WSGI. Al comprender cómo funciona este archivo, podemos comprender mejor cómo se ejecutan las aplicaciones Django y cómo implementar aplicaciones Django.

Si es útil, preste más atención a la cuenta pública personal de WeChat: [Perspectiva completa de Python] TeahLead_KrisChang, más de 10 años de experiencia en la industria de Internet e inteligencia artificial, más de 10 años de experiencia en tecnología y gestión de equipos comerciales, Tongji Software Licenciado en Ingeniería, Máster en Gestión de Ingeniería de Fudan, Arquitecto sénior de servicios en la nube certificado por Aliyun, Jefe de negocio de productos de IA con cientos de millones de ingresos.

Supongo que te gusta

Origin blog.csdn.net/magicyangjay111/article/details/131593182
Recomendado
Clasificación