Autor : Li Juncai (jcLee95) : https://blog.csdn.net/qq_28550263
Correo electrónico: [email protected]
Dirección del artículo : https://blog.csdn.net/qq_28550263/article/details/132893616
【介绍】:应用是Django项目的组成部分,一个Django项目可以分为多个应用,本文讲解Django应用(app)的创建,并实际完成一个简单应用的配置和开发。
Tabla de contenido
- 1. Información general
- 2. Crea tu primera aplicación Django
-
- 2.1 Crear una aplicación Django
- 2.2 Registrar la aplicación Django
- 2.3 Escribir modelos de datos (Modelos)
- 2.4 Crear vistas (Vistas)
- 2.5 Asignar URL a la aplicación
- 2.6 Asignar URL a vistas en la aplicación
- 2.7 Crear tabla de base de datos (migrar)
- 2.8 Acceder a nuestras aplicaciones en un navegador
- 3. Utilice plantillas en su aplicación
- 4. Administrar la aplicación en Django Admin
1. Información general
Una aplicación Django (App) es un componente modular de un proyecto Django que se utiliza para implementar funciones específicas. Un proyecto Django normalmente consta de múltiples aplicaciones, cada una con su propia funcionalidad y responsabilidades. En el artículo anterior, presentamos la diferencia entre aplicaciones y proyectos en Django y cómo crearlos usando herramientas de línea de comandos. A continuación, este artículo presentará de manera integral el uso relacionado de aplicaciones (aplicaciones) en Django y creará y completará una aplicación (aplicación) basada en un proyecto de Django.
2. Crea tu primera aplicación Django
Después de haber creado el directorio raíz de un proyecto Django e ingresado al directorio, puede seguir los siguientes pasos para crear una aplicación Django, configurarla, escribir código simple y finalmente ejecutarla.
2.1 Crear una aplicación Django
En el directorio raíz del proyecto Django (miproyecto en este caso), ejecute el siguiente comando para crear una aplicación Django:
python manage.py startapp myapp
Esto creará un myapp
directorio de aplicación llamado, que contiene la estructura básica de una aplicación Django.
2.2 Registrar la aplicación Django
Abra el archivo ubicado en el directorio raíz del proyecto myproject/settings.py
y busque INSTALLED_APPS
Configuración. Agregue su aplicación a esta lista:
INSTALLED_APPS = [
# ...
'myapp', # 添加该项以注册应用,应用名即使用 startapp 指定的名称
]
Esto le indicará al framework Django que su aplicación existe en el proyecto actual.
2.3 Escribir modelos de datos (Modelos)
Defina su modelo en un archivo bajo myapp
el directorio . models.py
Aquí hay un ejemplo:
from django.db import models
# 创建一个名为 MyModel 的 Django 数据模型类
class MyModel(models.Model):
# 定义一个名为 name 的字段,类型为 CharField,最大长度为 100 个字符
name = models.CharField(max_length=100)
# 定义一个名为 description 的字段,类型为 TextField,用于存储文本数据
description = models.TextField()
# 定义一个特殊方法 __str__,用于返回对象的字符串表示,通常在管理界面中显示对象时使用
def __str__(self):
# 返回对象的 name 属性作为字符串表示
return self.name
2.4 Crear vistas (Vistas)
Cree la función de vista en un archivo en myapp
el directorio . views.py
He aquí un ejemplo sencillo:
from django.http import JsonResponse
from .models import MyModel
# 导入 Django 的 render 函数,用于渲染 HTML 模板
from django.shortcuts import render
def my_view(request):
# 查询 MyModel 中的所有对象
my_objects = MyModel.objects.all()
# 创建一个包含所有对象信息的列表
data = []
for obj in my_objects:
data.append({
'name': obj.name,
'description': obj.description,
})
# 返回 JSON 响应
return JsonResponse(data, safe=False)
2.5 Asignar URL a la aplicación
El enrutamiento de Django es jerárquico: primero puede asignar una ruta a la aplicación, es decir, usar incluede
una función para incluir un archivo en una aplicación específica como el archivo de enrutamiento de la subaplicación. Sin embargo, esto no es necesario. En teoría, si el proyecto es lo suficientemente simple, el archivo de enrutamiento raíz del proyecto (archivo urls.py en el directorio de inicio del proyecto) se puede usar directamente sin crear una aplicación para todo el proyecto. El directorio de inicio se refiere a la raíz del proyecto (directorio con el mismo nombre que el proyecto) asigna vistas directamente. Se puede ver que esto en realidad completa el trabajo del Controlador (programador) en el marco MVC.
En un archivo en el directorio raíz del proyecto myproject/urls.py
, incluya la URL de su aplicación en el proyecto:
from django.contrib import admin
# 导入 Django 的 URL 路由和包含模块
from django.urls import path, include
# 定义 URL 映射关系列表 urlpatterns
urlpatterns = [
# 当用户访问 /admin/ 路径时,将请求交给 admin.site.urls 处理
path('admin/', admin.site.urls),
# 添加这行:当用户访问 /myapp/ 路径时,将请求交给 myapp.urls 模块中定义的 URL 处理
path('myapp/', include('myapp.urls')),
]
La solicitud path('myapp/', include('myapp.urls'))
se asigna a una aplicación llamada myapp y la asignación de URL de la aplicación se define en el myapp.urls
módulo (urls.py en la aplicación myapp).
De esta manera, una vez que el usuario accede /myapp/
a la ruta, myapp.urls
la solicitud se manejará mediante el manejo de URL en el módulo, lo que permite a la aplicación definir sus propias vistas y funciones y asociarlas con el mapeo de URL del proyecto principal.
2.6 Asignar URL a vistas en la aplicación
myapp
Cree un archivo nombrado en el directorio y urls.py
agregue el siguiente contenido:
from django.urls import path
from . import views
# 都将继承app路由 'myapp/'
urlpatterns = [
# 为# views模块下的视图 my_view 分配路由 'myapp/myview/'
path('myview/', views.my_view, name='my_view'),
]
Puede especificar múltiples asignaciones de rutas en la lista de patrones de URL para views.py
asignar rutas a diferentes funciones de vista o métodos de vista en formato .
2.7 Crear tabla de base de datos (migrar)
Ejecute el siguiente comando para crear la tabla de la base de datos:
python manage.py makemigrations # 创建数据库模型的迁移文件
python manage.py migrate # 应用数据库迁移
Esto creará una tabla de base de datos basada en lo que se define en el modelo.
De forma predeterminada, no necesita instalar ninguna otra base de datos, se generará automáticamente un archivo de base de datos SQLite. La base de datos SQLite es una base de datos liviana que se usa comúnmente para dispositivos móviles e incrustación de aplicaciones. De forma predeterminada, se guardará en el directorio raíz del proyecto después de generarse:
Aquí utilizo el software SQLiteSpy para abrirlo:
Puedes ver la tabla correspondiente a la aplicación actual: myapp_mymodel
. Entre ellos myapp
se encuentra el nombre de la aplicación actual, mymodel
que corresponde al modelo de datos actual, se expresa en minúsculas y está separado de la aplicación por un guión bajo. Si define varias clases de modelo de datos en una aplicación (aplicación) Django, pero después de realizar la migración, también se generarán las tablas de datos correspondientes con nombres similares.
Cabe señalar que si no se utiliza su modelo de datos, el archivo de migración de datos no se generará durante la migración de datos y la migración de datos de la aplicación posterior no se producirá en consecuencia. Por ejemplo, si la función de vista se cambia a:
from django.http import HttpResponse def my_view(request): return HttpResponse("Hello, Django!")
Esto no utiliza el modelo de datos en absoluto, también puede funcionar, pero no realizará la migración de datos y las tablas relacionadas no se crearán en la base de datos correspondiente.
No solo Django, muchos marcos similares proporcionan comandos o interfaces de programación similares durante la ejecución. en:
1. comando hacer migraciones
El comando makemigrations se utiliza para crear archivos de migración para modelos de bases de datos. Los archivos de migración contienen instrucciones sobre cómo cambiar el modelo de base de datos.
Si Django no detecta ningún cambio en los modelos de la base de datos (Modelos), verá "No se detectaron cambios" después de ejecutar el comando para crear un archivo de migración:
No changes detected
2. comando de migración
El comando de migración se utiliza para aplicar migraciones de bases de datos para sincronizar el esquema de la base de datos con el modelo de la aplicación .
Cuando ejecuta el comando de migración, Django examina todos los archivos de migración y usa las instrucciones en esos archivos para crear, modificar o eliminar tablas de bases de datos para que sean consistentes con la definición de su modelo.
El comando de migración ejecuta los archivos de migración de forma secuencial, comenzando con la migración más antigua y aplicando los cambios de forma incremental para garantizar que la base de datos permanezca coherente con el estado actual de la aplicación.
2.8 Acceder a nuestras aplicaciones en un navegador
Ahora puedes ejecutar el servidor de desarrollo de Django para ver la aplicación:
python manage.py runserver
Visita http://localhost:8000/myapp/myview/
para ver "¡Hola, Django!" en tu navegador. Este es el proceso básico para crear y ejecutar una aplicación Django simple. Esta aplicación se puede ampliar y personalizar para satisfacer sus necesidades.
Debido al uso de JsonResponse , los navegadores más recientes ofrecen automáticamente la opción de una hermosa salida de JSON. Sin embargo, como aquí no tenemos datos, lo que vemos es un "[]".
Podemos agregar datos manualmente en el administrador más adelante para ver algunos efectos, pero aquí insertamos datos de dos maneras, una es Django Shell y la otra usa lenguaje SQL. Si está utilizando lenguaje SQL, necesita un pequeño software que pueda abrir la base de datos SQLite (si está utilizando otras bases de datos, también puede utilizar el software correspondiente o la herramienta Sell)/
Insertar datos usando Django Shell
Dado que la tabla se crea a través del modelo de datos MyModel , podemos insertar datos en los siguientes pasos:
- Ejecute el siguiente comando en el directorio raíz del proyecto para abrir Django Shell:
python manage.py shell
- Importa tu clase de modelo
MyModel
:
from myapp.models import MyModel
- Cree nuevos registros de datos y guárdelos. Puede utilizar el
create
método de la clase modelo o crear una instancia directamente de la clase modelo y llamarsave
al método. Aquí hay un código de muestra:
# 使用 create 方法创建新记录
MyModel.objects.create(name="记录1", description="这是记录1的描述")
MyModel.objects.create(name="记录2", description="这是记录2的描述")
# 或者直接实例化模型类并保存
record3 = MyModel(name="记录3", description="这是记录3的描述")
record3.save()
- Salga de Django Shell:
exit()
Como se muestra en la imagen:
Ahora, ha insertado manualmente varios datos en MyModel
la tabla, como se muestra en la figura:
Puede agregar más registros de datos según sea necesario. Estos datos permanecerán en la base de datos y podrán consultarse y utilizarse en su aplicación.
Ahora, vuelva a ejecutar el servidor de desarrollo:
python manage.py runserver
Abra el navegador nuevamente e ingrese a la página http://127.0.0.1:8000/myapp/myview/
. Puede ver que el resultado mostrado ya no es una matriz vacía:
¿Es un poco inesperado y parece que el código está confuso? ——En realidad no, es solo que se ha codificado el chino normal.
Aquí es cuando accedes a http://127.0.0.1:8000/myapp/myview/, tu función de vista devuelve una respuesta en formato JSON. Esto se debe a que se utiliza en la función de vista JsonResponse
y devuelve datos JSON que contienen los datos del modelo. El modo de visualización de datos JSON es el predeterminado, que se representa en codificación Unicode. Es por eso que ves caracteres de escape Unicode en tu navegador.
Si desea mostrar datos JSON de una manera más legible en su navegador, puede agregar una extensión de navegador o usar un visor JSON en línea. Estas herramientas pueden formatear y mostrar datos JSON en una forma más legible.
Cabe señalar que este método solo se aplica a la inserción de datos de inicialización o datos de prueba. En un entorno de producción real, los datos generalmente se agregan dinámicamente a través de la interfaz de usuario u otros medios.
Insertar datos directamente usando SQL
También podemos ingresar directamente declaraciones SQL para insertar datos a través de herramientas de administración de bases de datos, como MySQL Workbench, pgAdmin (para PostgreSQL), SQLiteSqy de SQLite, etc. Por ejemplo, lo siguiente es insertar datos en SQLiteSqy:
Las frases más importantes son:
INSERT INTO myapp_mymodel (name, description)
VALUES
('记录1', '这是记录1的描述'),
('记录2', '这是记录2的描述'),
('记录3', '这是记录3的描述');
3. Utilice plantillas en su aplicación
Cree una carpeta llamada plantillas en el directorio de su aplicación para almacenar sus archivos de plantilla HTML. my_template.html
Como ejemplo, aquí creamos un archivo HTML nombrado en el directorio y editamos su contenido de texto de la siguiente manera:
<!-- my_template.html -->
<!DOCTYPE html>
<html>
<head>
<title>我的模板</title>
</head>
<body>
<h1>欢迎来到{
{ site_name }}网站</h1>
<p>今天是{
{ current_date }}</p>
<ul>
{% for item in items %}
<li>{
{ item }}</li>
{% endfor %}
</ul>
<p>总价: ${
{ total_price|floatformat:2 }}</p>
</body>
</html>
En este ejemplo, utilizamos la sintaxis de plantilla proporcionada por Django. Las llaves dobles representan la sintaxis de interpolación y el medio es el nombre de la variable de Python, que representa el valor insertado. Los lectores que han aprendido el front-end, de hecho, muchos Todos ellos son iguales, como en el marco Vue . Se utiliza esta interpolación. Este método de interpolación se llama sintaxis de interpolación Moustache . Por ejemplo en este caso:
{ { site_name }}
: Esta es la sintaxis de interpolación utilizada para insertar el valor de una variable en la plantilla.{ { current_date }}
: También es una sintaxis de interpolación, utilizada para insertar el valor de la fecha actual.
{
{ total_price|floatformat:2 }}
Se utiliza la sintaxis de filtro de las plantillas de Django. Este ejemplo formatea la variable precio_total como un número de punto flotante con dos decimales. Una característica de la sintaxis del filtro es que |
a continuación se indican las condiciones de filtrado para las variables anteriores.
{% for item in items %}
La declaración de bucle que forma {% endfor %}
una plantilla es similar a la directiva vue-for en el marco de front-end Vue .
En este ejemplo:
<ul>
{% for item in items %}
<li>{
{ item }}</li>
{% endfor %}
</ul>
Esta declaración itera sobre una lista denominada elementos e inserta elementos en la lista en cada iteración.
A continuación, agregamos una nueva función de vista en esta aplicación views.py
y usamos esta plantilla HTML en la función de vista para devolver la solicitud HTTP:
# 新增到 views.py
from django.shortcuts import render
def my_template_view(request):
site_name = "我的Django网站"
current_date = "2023-09-15"
items = ["物品1", "物品2", "物品3"]
total_price = 123.45
context = {
'site_name': site_name,
'current_date': current_date,
'items': items,
'total_price': total_price,
}
return render(request, 'my_template.html', context)
Entre ellos, render es una función de vista en el marco de Django, que se utiliza para renderizar plantillas HTML y generar respuestas HTTP. Su función principal es combinar la plantilla con datos para generar la página HTML final y luego devolver la página al navegador del cliente como una respuesta HTTP.
A continuación, agregue la ruta de la función de vista my_template_view en los patrones de URL del archivo urls.py de la aplicación actual:
from django.urls import path
from . import views
urlpatterns = [
path('myview/', views.my_view, name='my_view'),
# 新增
path('my_template_view/', views.my_template_view, name='my_template_view'),
]
A continuación, también necesitamos cambiar la configuración del proyecto Django. Abra el proyecto settings.py
y TEMPLATES
agréguelo bajo el elemento de configuración para permitir que Django encuentre las carpetas 'APP_DIRS': True,
en cada aplicación (app) para obtener archivos de plantilla:templates
TEMPLATES = [
{
# ...
'APP_DIRS': True,
},
]
APP_DIRS
Indica si el motor Django debe buscar archivos fuente de plantilla en las aplicaciones instaladas, así que asegúrese de que la INSTALLED_APPS
aplicación actual se haya instalado (registrada) en tales como:
De esta manera, cuando ejecute python manage.py runserver
, el acceso http://127.0.0.1:8000/myapp/my_template_view/
verá el siguiente efecto:
De lo contrario, es posible que se muestre un error de plantilla no encontrada durante el acceso, como por ejemplo:
Además, a veces Django puede almacenar en caché los resultados de búsqueda de plantillas. Un consejo de depuración común en el desarrollo es que si confirma que ha cambiado el código correcto, pero el nuevo efecto nunca se representa, puede usar el comando para borrar el caché de Django clearcache
:
python manage.py clearcache
4. Administrar la aplicación en Django Admin
El administrador de Django es una función poderosa que genera automáticamente una interfaz de administración de backend y permite a los desarrolladores administrar fácilmente los datos del sitio web, incluidos los datos del modelo en la base de datos.
4.1 Creación de superusuario
Antes de usar el administrador de Django, primero debe crear una cuenta de superusuario para poder iniciar sesión en la interfaz de administración en segundo plano del administrador y realizar operaciones de administración. Se puede crear un superusuario usando el siguiente comando:
python manage.py createsuperuser
Luego, siga las indicaciones para ingresar su nombre de usuario, dirección de correo electrónico y contraseña para crear una cuenta de superusuario. Por ejemplo:
Como demostración, utilicé deliberadamente una contraseña que era demasiado corta. Puedes ver que Django solicitó esto, diciendo:
Esta contraseña es demasiado corta. Debe contener al menos 8 caracteres. Esta contraseña es demasiado corta. Debe contener al menos 8 caracteres.
Esta contraseña es demasiado común. Esta contraseña es demasiado común.
Esta contraseña es completamente numérica. Esta contraseña es completamente numérica.
Sin embargo, pasamos por: ¿
Omitir la validación de contraseña y crear usuario de todos modos?
Responda "Y" para confirmar.
4.1 Modelo de registro
si no hay derecho
Para administrar los datos del modelo en la interfaz de administración en segundo plano, el modelo debe estar registrado en admin.py
un archivo. En el archivo admin.py de su aplicación, importe los modelos relevantes y admin.site.register
regístrelos usando la función.
Tenga en cuenta que si no lo registra en admin.py, no podrá ver nuestro modelo después de iniciar sesión en la interfaz de administración a continuación:
Grupo (grupo de usuarios) y Usuarios (usuario) en la imagen son ambos modelos propios de Django. aplicación de gestión, y No hay ningún modelo que definamos.
# myapp 应用的 admin.py
from django.contrib import admin
from .models import MyModel
# Register your models here.
admin.site.register(MyModel)
4.3 Acceder al fondo de administrador
Acceda a la interfaz de administración en segundo plano en el navegador y ejecute el servidor de desarrollo (comando runserver) en la URL, que generalmente es http://127.0.0.1/admin/
. Puede iniciar sesión utilizando la cuenta de superusuario creada anteriormente. Por ejemplo, aquí visitamos http://127.0.0.1:8000/admin
:
Como aún no ha iniciado sesión, la administración de permisos de Django lo redirigirá automáticamente a la ruta de inicio de sesión del administrador, es decir http://127.0.0.1:8000/admin/login/?next=/admin/
. Solo necesitamos ingresar aquí el nombre de superusuario creado previamente y la contraseña correspondiente para ingresar a la página de inicio del administrador.
Puede ver que el modelo de datos MyModels en la aplicación myapp se muestra en Admin (como Mis modelos).
4.4 Gestión de datos del modelo
Haga clic en el modelo de datos (Mis modelos) a continuación en la aplicación myapp para ver:
Puedes ver los datos añadidos anteriormente.
Puedes hacer lo siguiente:
-
Ver datos : en el fondo de administración, puede ver los datos del modelo en la base de datos, presentados en listas, detalles u otras formas.
-
Agregar datos : Puede agregar nuevos registros de datos, completar los campos y guardar.
-
Editar y actualizar datos : los registros de datos existentes se pueden editar y guardar los cambios.
-
Eliminar datos : puede eliminar registros de datos que ya no sean necesarios.
4.5 Personalizar la interfaz de administración
La interfaz de administración de Django se puede personalizar para satisfacer necesidades específicas. Puede definir la clase de administración del modelo en el archivo admin.py y personalizar la visualización de campos, el filtro, la búsqueda, la clasificación y otras opciones para cambiar la forma en que se presenta el modelo en la interfaz de administración.
from django.contrib import admin
from .models import MyModel
class MyModelAdmin(admin.ModelAdmin):
list_display = ('name', 'description')
admin.site.register(MyModel, MyModelAdmin)
4.6 Funciones ampliadas
También puede utilizar bibliotecas y complementos de terceros para ampliar la funcionalidad del administrador de Django, como django-import-export para importar y exportar datos, o django-grappelli para embellecer la interfaz de administración.
Por ejemplo, puedes instalar y usar django-grappelli:
pip install django-grappelli
Luego regístrelo en INSTALLED_APPS en settings.py:
INSTALLED_APPS = (
'grappelli',
'django.contrib.admin',
# ...
)
Luego asigna rutas:
from django.conf.urls import include
urlpatterns = [
path('grappelli/', include('grappelli.urls')), # grappelli URLS
path('admin/', admin.site.urls),
]
Luego registre el controlador de contexto de la plantilla:
TEMPLATES = [
{
...
'OPTIONS': {
'context_processors': [
...
'django.template.context_processors.request',
...
],
},
},
]
Cuando se utiliza oficialmente para la implementación del servidor, puede utilizar los siguientes métodos para recopilar archivos multimedia:
python manage.py collectstatic
Con la misma función, la interfaz de administración ha sido "embellecida", por ejemplo, cuando visite " http://127.0.0.1:8000/admin/myapp/mymodel/
" nuevamente, podrá ver: