Tutorial: Implementación de una aplicación web de Django de Python con PostgreSQL en Azure App ServiceTutorial: Deploy a Django web app with PostgreSQL in Azure App Service

En este tutorial se muestra cómo implementar una aplicación web de Django de Python en Azure App Service y cómo conectarla a una base de datos de Azure Database for Postgres.This tutorial shows how to deploy a data-driven Python Django web app to Azure App Service and connect it to an Azure Database for Postgres database. App Service proporciona un servicio de hospedaje web muy escalable y con aplicación de revisiones de un modo automático.App Service provides a highly scalable, self-patching web hosting service.

En este tutorial, se usa la CLI de Azure para completar las siguientes tareas:In this tutorial, you use the Azure CLI to complete the following tasks:

  • Configurar el entorno inicial con Python y la CLI de AzureSet up your initial environment with Python and the Azure CLI
  • Crear una base de datos de Azure Database for PostgreSQLCreate an Azure Database for PostgreSQL database
  • Implementar código en Azure App Service y conectarse a PostgreSQLDeploy code to Azure App Service and connect to PostgreSQL
  • Actualizar el código y volver a implementarloUpdate your code and redeploy
  • Visualización de los registros de diagnósticoView diagnostic logs
  • Administrar la aplicación web en Azure PortalManage the web app in the Azure portal

También puede usar la versión de Azure Portal de este tutorial.You can also use the Azure portal version of this tutorial.

1. Configuración del entorno inicial1. Set up your initial environment

  1. Disponga de una cuenta de Azure con una suscripción activa.Have an Azure account with an active subscription. Cree una cuenta gratuita.Create an account for free.
  2. Instale Python 3.6 o una versión posterior.Install Python 3.6 or higher.
  3. Instale la CLI de Azure 2.18.0 o posterior, con la que se ejecutan comandos en cualquier shell para aprovisionar y configurar los recursos de Azure.Install the Azure CLI 2.18.0 or higher, with which you run commands in any shell to provision and configure Azure resources.

Abra una ventana del terminal y compruebe que la versión de Python es la 3.6 o superior:Open a terminal window and check your Python version is 3.6 or higher:

python3 --version

Compruebe que la versión de la CLI de Azure es la 2.18.0 o posterior:Check that your Azure CLI version is 2.18.0 or higher:

az --version

Si necesita actualizar, pruebe el comando az upgrade (requiere la versión 2.11 o superior), o consulte Instalación de la CLI de Azure.If you need to upgrade, try the az upgrade command (requires version 2.11+) or see Install the Azure CLI.

Después, inicie sesión en Azure mediante la CLI:Then sign in to Azure through the CLI:

az login

Este comando abre un explorador que recopila las credenciales.This command opens a browser to gather your credentials. Cuando el comando finaliza, muestra una salida JSON que contiene información sobre las suscripciones.When the command finishes, it shows JSON output containing information about your subscriptions.

Una vez que haya iniciado sesión, puede ejecutar comandos de Azure con la CLI de Azure para trabajar con los recursos de su suscripción.Once signed in, you can run Azure commands with the Azure CLI to work with resources in your subscription.

¿Tiene problemas?Having issues? Póngase en contacto con nosotros.Let us know.

2. Clonación o descarga de la aplicación de ejemplo2. Clone or download the sample app

Clone el repositorio de ejemplo:Clone the sample repository:

git clone https://github.com/Azure-Samples/djangoapp

Después, vaya a esa carpeta:Then navigate into that folder:

cd djangoapp

El ejemplo djangoapp contiene la aplicación en Django de sondeos controlada por datos que se obtiene al seguir Creación de la primera aplicación Django de la documentación de Django.The djangoapp sample contains the data-driven Django polls app you get by following Writing your first Django app in the Django documentation. La aplicación completa se proporciona aquí para su comodidad.The completed app is provided here for your convenience.

El ejemplo también se ha modificado para ejecutarse en un entorno de producción, como App Service:The sample is also modified to run in a production environment like App Service:

  • La configuración para producción está en el archivo azuresite/production.py.Production settings are in the azuresite/production.py file. Los valores del desarrollo están en el archivo azuresite/settings.py.Development settings are in azuresite/settings.py.
  • La aplicación usa la configuración de producción cuando la variable de entorno WEBSITE_HOSTNAME está establecida.The app uses production settings when the WEBSITE_HOSTNAME environment variable is set. Azure App Service establece automáticamente esta variable en la dirección URL de la aplicación web, como msdocs-django.azurewebsites.net.Azure App Service automatically sets this variable to the URL of the web app, such as msdocs-django.azurewebsites.net.

Los valores de producción son específicos de la configuración de Django para ejecutarse en cualquier entorno de producción y no son específicos de App Service.The production settings are specific to configuring Django to run in any production environment and aren't particular to App Service. Para obtener más información, consulte la lista de implementación de Django.For more information, see the Django deployment checklist. Consulte también Configuración de producción para Django en Azure para los detalles de algunos de los cambios.Also see Production settings for Django on Azure for details on some of the changes.

¿Tiene problemas?Having issues? Póngase en contacto con nosotros.Let us know.

3. Creación de una base de datos de Postgres en Azure3. Create Postgres database in Azure

Instale la extensión db-up para la CLI de Azure:Install the db-up extension for the Azure CLI:

az extension add --name db-up

Si no se reconoce el comando az, asegúrese de que tiene instalada la CLI de Azure tal y como se describe en Configuración del entorno inicial.If the az command is not recognized, be sure you have the Azure CLI installed as described in Set up your initial environment.

A continuación, cree la base de datos de Postgres en Azure con el comando az postgres up:Then create the Postgres database in Azure with the az postgres up command:

az postgres up --resource-group DjangoPostgres-tutorial-rg --location westus2 --sku-name B_Gen5_1 --server-name <postgres-server-name> --database-name pollsdb --admin-user <admin-username> --admin-password <admin-password> --ssl-enforcement Enabled
  • Reemplace <postgres-server-name> por un nombre que sea único en Azure (el punto de conexión de servidor será https://<postgres-server-name>.postgres.database.azure.com).Replace <postgres-server-name> with a name that's unique across all Azure (the server endpoint becomes https://<postgres-server-name>.postgres.database.azure.com). Un buen patrón es usar una combinación del nombre de la empresa y otro valor exclusivo.A good pattern is to use a combination of your company name and another unique value.
  • Para <admin-username> y <admin-password> , especifique las credenciales para crear un usuario administrador de este servidor Postgres.For <admin-username> and <admin-password>, specify credentials to create an administrator user for this Postgres server. El nombre de inicio de sesión del administrador no puede ser azure_superuser, azure_pg_admin, admin, administrator, root, guest ni public.The admin username can't be azure_superuser, azure_pg_admin, admin, administrator, root, guest, or public. No puede empezar por pg_ .It can't start with pg_. La contraseña debe contener entre 8 y 128 caracteres de tres de las categorías siguientes: letras del alfabeto inglés mayúsculas, letras del alfabeto inglés minúsculas, números (0 a 9) y caracteres no alfanuméricos (por ejemplo, !, $, #, %).The password must contain 8 to 128 characters from three of the following categories: English uppercase letters, English lowercase letters, numbers (0 through 9), and non-alphanumeric characters (for example, !, #, %). La contraseña no puede contener el nombre de usuario.The password cannot contain username.
  • No use el carácter $ en el nombre de usuario ni la contraseña.Do not use the $ character in the username or password. Más adelante creará variables de entorno con estos valores, donde el carácter $ tiene un significado especial dentro del contenedor de Linux que se usa para ejecutar aplicaciones de Python.Later you create environment variables with these values where the $ character has special meaning within the Linux container used to run Python apps.
  • El plan de tarifa B_Gen5_1 (Básico, Gen5 y 1 núcleo) que se usa aquí es el menos costoso.The B_Gen5_1 (Basic, Gen5, 1 core) pricing tier used here is the least expensive. En el caso de las bases de datos de producción, omita el argumento --sku-name para usar el nivel GP_Gen5_2 (De uso general, gen. 5, 2 núcleos) en su lugar.For production databases, omit the --sku-name argument to use the GP_Gen5_2 (General Purpose, Gen 5, 2 cores) tier instead.

Este comando realiza las siguientes acciones, que pueden tardar algunos minutos:This command performs the following actions, which may take a few minutes:

  • Crea un grupo de recursos denominado DjangoPostgres-tutorial-rg, si aún no existe.Create a resource group called DjangoPostgres-tutorial-rg, if it doesn't already exist.
  • Cree un servidor Postgres y asigne el nombre con el argumento --server-name.Create a Postgres server named by the --server-name argument.
  • Cree una cuenta de administrador con los argumentos --admin-user y --admin-password.Create an administrator account using the --admin-user and --admin-password arguments. Puede omitir estos argumentos para permitir que el comando genere automáticamente unas credenciales únicas.You can omit these arguments to allow the command to generate unique credentials for you.
  • Cree la base de datos pollsdb y asigne el nombre con el argumento --database-name.Create a pollsdb database as named by the --database-name argument.
  • Habilita el acceso desde la dirección IP local.Enable access from your local IP address.
  • Habilita el acceso desde servicios de Azure.Enable access from Azure services.
  • Crea un usuario de base de datos con acceso a la base de datos pollsdb.Create a database user with access to the pollsdb database.

Puede realizar todos los pasos por separado con otros comandos az postgres y psql, pero az postgres up realiza todos los pasos juntos.You can do all the steps separately with other az postgres and psql commands, but az postgres up does all the steps together.

Cuando el comando se completa, genera un objeto JSON que contiene cadenas de conexión diferentes para la base de datos, junto con la dirección URL del servidor, un nombre de usuario generado (como "joyfulKoala@msdocs-djangodb-12345") y una contraseña de GUID.When the command completes, it outputs a JSON object that contains different connection strings for the database along with the server URL, a generated user name (such as "joyfulKoala@msdocs-djangodb-12345"), and a GUID password. Copie el nombre de usuario y la contraseña en un archivo de texto temporal, ya que los necesitará más adelante en este tutorial.Copy the user name and password to a temporary text file as you need them later in this tutorial.

Sugerencia

-l <location-name>, se puede establecer en cualquiera de las regiones de Azure.-l <location-name>, can be set to any one of the Azure regions. Puede obtener las regiones disponibles para su suscripción con el comando az account list-locations.You can get the regions available to your subscription with the az account list-locations command. En el caso de las aplicaciones de producción, coloque la base de datos y la aplicación en la misma ubicación.For production apps, put your database and your app in the same location.

¿Tiene problemas?Having issues? Póngase en contacto con nosotros.Let us know.

4. Implementación del código en Azure App Service4. Deploy the code to Azure App Service

En esta sección, creará un host de aplicación en la aplicación de App Service, conectará esta aplicación a la base de datos de Postgres y, a continuación, implementará el código en ese host.In this section, you create app host in App Service app, connect this app to the Postgres database, then deploy your code to that host.

4.1 Creación de la aplicación de App Service4.1 Create the App Service app

En el terminal, asegúrese de estar en la carpeta del repositorio djangoapp que contiene el código de la aplicación.In the terminal, make sure you're in the djangoapp repository folder that contains the app code.

Cree una aplicación de App Service (el proceso de host) con el comando az webapp up:Create an App Service app (the host process) with the az webapp up command:

az webapp up --resource-group DjangoPostgres-tutorial-rg --location westus2 --plan DjangoPostgres-tutorial-plan --sku B1 --name <app-name>
  • Para el argumento --location, use la misma ubicación que usó para la base de datos en la sección anterior.For the --location argument, use the same location as you did for the database in the previous section.
  • Reemplace <app-name> por un nombre que sea único en Azure (el punto de conexión del servidor es https://<app-name>.azurewebsites.net).Replace <app-name> with a unique name across all Azure (the server endpoint is https://<app-name>.azurewebsites.net). Los caracteres permitidos para <app-name> son A-Z, 0-9 y -.Allowed characters for <app-name> are A-Z, 0-9, and -. Un buen patrón es usar una combinación del nombre de la empresa y un identificador de la aplicación.A good pattern is to use a combination of your company name and an app identifier.

Este comando realiza las siguientes acciones, que pueden tardar algunos minutos:This command performs the following actions, which may take a few minutes:

  • Cree el grupo de recursos si todavía no existe.Create the resource group if it doesn't already exist. (En este comando se usa el mismo grupo de recursos en el que se creó la base de datos anterior).(In this command you use the same resource group in which you created the database earlier.)
  • Cree el plan de App Service DjangoPostgres-tutorial-plan en el plan de tarifa Básico (B1), si no existe.Create the App Service plan DjangoPostgres-tutorial-plan in the Basic pricing tier (B1), if it doesn't exist. --plan y --sku son opcionales.--plan and --sku are optional.
  • Cree la aplicación de App Service, si no existe.Create the App Service app if it doesn't exist.
  • Habilite el registro predeterminado de la aplicación, si aún no está habilitado.Enable default logging for the app, if not already enabled.
  • Cargue el repositorio mediante la implementación del archivo ZIP con la automatización de compilación habilitada.Upload the repository using ZIP deployment with build automation enabled.
  • Almacenar en caché los parámetros comunes, como el nombre del grupo de recursos y el plan de App Service, mediante el archivo .azure/config. Como consecuencia, no es necesario especificar el mismo parámetro con comandos posteriores.Cache common parameters, such as the name of the resource group and App Service plan, into the file .azure/config. As a result, you don't need to specify all the same parameter with later commands. Por ejemplo, para volver a implementar la aplicación después de realizar cambios, puede ejecutar az webapp up de nuevo sin ningún parámetro.For example, to redeploy the app after making changes, you can just run az webapp up again without any parameters. Sin embargo, los comandos que proceden de extensiones de la CLI, como az postgres up, no usan la memoria caché en este momento, por lo que es necesario especificar aquí el grupo de recursos y la ubicación, con el uso inicial de az webapp up.Commands that come from CLI extensions, such as az postgres up, however, do not at present use the cache, which is why you needed to specify the resource group and location here with the initial use of az webapp up.

Tras una implementación correcta, el comando genera la salida JSON como en el ejemplo siguiente:Upon successful deployment, the command generates JSON output like the following example:

Ejemplo de la salida del comando az webapp up

¿Tiene problemas?Having issues? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.Refer first to the Troubleshooting guide, otherwise, let us know.

4.2 Configuración de variables de entorno para conectar la base de datos4.2 Configure environment variables to connect the database

Con el código ahora implementado en App Service, el paso siguiente consiste en conectar la aplicación a la base de datos de Postgres en Azure.With the code now deployed to App Service, the next step is to connect the app to the Postgres database in Azure.

El código de la aplicación espera encontrar la información de la base de datos en cuatro variables de entorno llamadas DBHOST, DBNAME, DBUSER y DBPASS.The app code expects to find database information in four environment variables named DBHOST, DBNAME, DBUSER, and DBPASS.

Para establecer variables de entorno en App Service, cree "valores de aplicación" mediante el comando az webapp config appsettings set siguiente.To set environment variables in App Service, create "app settings" with the following az webapp config appsettings set command.

az webapp config appsettings set --settings DBHOST="<postgres-server-name>" DBNAME="pollsdb" DBUSER="<username>" DBPASS="<password>"
  • Reemplace <postgres-server-name> por el nombre que usó anteriormente con el comando az postgres up.Replace <postgres-server-name> with the name you used earlier with the az postgres up command. El código de azuresite/production.py anexa automáticamente .postgres.database.azure.com para crear la dirección URL completa del servidor Postgres.The code in azuresite/production.py automatically appends .postgres.database.azure.com to create the full Postgres server URL.
  • Reemplace <username> y <password> por las credenciales de administrador que usó con el comando az postgres up anterior, o por las que generó automáticamente el comando az postgres up.Replace <username> and <password> with the administrator credentials that you used with the earlier az postgres up command, or those that az postgres up generated for you. El código de azuresite/production.py construye automáticamente el nombre de usuario de Postgres completo a partir de DBUSER y DBHOST, así que no incluya la parte @server.The code in azuresite/production.py automatically constructs the full Postgres username from DBUSER and DBHOST, so don't include the @server portion. (Además, como se indicó anteriormente, no debe usar el carácter $ en ninguno de los dos valores, ya que tiene un significado especial para las variables de entorno de Linux).(Also, as noted earlier, you should not use the $ character in either value as it has a special meaning for Linux environment variables.)
  • El grupo de recursos y el nombre de la aplicación se extraen de los valores almacenados en caché en el archivo .azure/config.The resource group and app names are drawn from the cached values in the .azure/config file.

En el código de Python, tiene acceso a esta configuración como variables de entorno con instrucciones como os.environ.get('DBHOST').In your Python code, you access these settings as environment variables with statements like os.environ.get('DBHOST'). Para obtener más información, consulte Acceso a variables de entorno.For more information, see Access environment variables.

¿Tiene problemas?Having issues? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.Refer first to the Troubleshooting guide, otherwise, let us know.

4.3 Ejecución de migraciones de la base de datos de Django4.3 Run Django database migrations

Las migraciones de bases de datos de Django aseguran que el esquema de la base de datos de PostgreSQL en Azure coincida con las descritas en el código.Django database migrations ensure that the schema in the PostgreSQL on Azure database match those described in your code.

  1. Abra una sesión de SSH en el explorador. Para ello, vaya a la siguiente dirección URL e inicie sesión con las credenciales de su cuenta de Azure (no las credenciales del servidor de bases de datos).Open an SSH session in the browser by navigating to the following URL and signing in with your Azure account credentials (not the database server credentials).

    https://<app-name>.scm.azurewebsites.net/webssh/host
    

    Reemplace <app-name> por el nombre usado anteriormente en el comando az webapp up.Replace <app-name> with the name used earlier in the az webapp up command.

    Puede conectarse alternativamente a una sesión SSH mediante el comando az webapp ssh.You can alternately connect to an SSH session with the az webapp ssh command. En Windows, este comando requiere la CLI de Azure 2.18.0 o posterior.On Windows, this command requires the Azure CLI 2.18.0 or higher.

    Si no puede conectarse a la sesión SSH, significa que no se pudo iniciar la propia aplicación.If you cannot connect to the SSH session, then the app itself has failed to start. Compruebe los registros de diagnóstico para más información.Check the diagnostic logs for details. Por ejemplo, si no ha creado la configuración de la aplicación necesaria en la sección anterior, los registros indicarán KeyError: 'DBNAME'.For example, if you haven't created the necessary app settings in the previous section, the logs will indicate KeyError: 'DBNAME'.

  2. En la sesión de SSH, ejecute los siguientes comandos (puede pegar los comandos con CTRL+Mayús+V):In the SSH session, run the following commands (you can paste commands using Ctrl+Shift+V):

    # Change to the app folder
    cd $APP_PATH
    
    # Activate the venv
    source /antenv/bin/activate
    
    # Install requirements
    pip install -r requirements.txt
    
    # Run database migrations
    python manage.py migrate
    
    # Create the super user (follow prompts)
    python manage.py createsuperuser
    

    Si encuentra algún error relacionado con la conexión a la base de datos, compruebe los valores de la configuración de la aplicación creada en la sección anterior.If you encounter any errors related to connecting to the database, check the values of the application settings created in the previous section.

  3. El comando createsuperuser le pide las credenciales de superusuario.The createsuperuser command prompts you for superuser credentials. A los efectos de este tutorial, use el nombre de usuario predeterminado root, presione ENTRAR en la dirección de correo electrónico para que quede en blanco y escriba Pollsdb1 como contraseña.For the purposes of this tutorial, use the default username root, press Enter for the email address to leave it blank, and enter Pollsdb1 for the password.

  4. Si aparece un error que indica que la base de datos está bloqueada, asegúrese de haber ejecutado el comando az webapp settings en la sección anterior.If you see an error that the database is locked, make sure that you ran the az webapp settings command in the previous section. Sin esa configuración, el comando Migrate no se puede comunicar con la base de datos, y esto provoca el error.Without those settings, the migrate command cannot communicate with the database, resulting in the error.

¿Tiene problemas?Having issues? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.Refer first to the Troubleshooting guide, otherwise, let us know.

4.4 Creación de una pregunta de sondeo en la aplicación4.4 Create a poll question in the app

  1. En un explorador, abra la dirección URL http://<app-name>.azurewebsites.net.In a browser, open the URL http://<app-name>.azurewebsites.net. La aplicación debe mostrar los mensajes "Polls app" (Aplicación de sondeos) y "No polls are available" (No hay sondeos disponibles) porque todavía no hay sondeos específicos en la base de datos.The app should display the message "Polls app" and "No polls are available" because there are no specific polls yet in the database.

    Si ve el mensaje "Application Error" (Error de aplicación), es probable que no haya creado la configuración necesaria en el paso anterior, Configuración de las variables de entorno para conectarse a la base de datos, o que dichos valores contengan errores.If you see "Application Error", then it's likely that you either didn't create the required settings in the previous step, Configure environment variables to connect the database, or that those value contain errors. Ejecute el comando az webapp config appsettings list para comprobar la configuración.Run the command az webapp config appsettings list to check the settings. También puede comprobar los registros de diagnóstico para ver errores específicos durante el inicio de la aplicación.You can also check the diagnostic logs to see specific errors during app startup. Por ejemplo, si no ha creado la configuración, los registros mostrarán el error KeyError: 'DBNAME'.For example, if you didn't create the settings, the logs will show the error, KeyError: 'DBNAME'.

    Después de actualizar la configuración para corregir los errores, espere un minuto para que la aplicación se reinicie y, después, actualice el explorador.After updating the settings to correct any errors, give the app a minute to restart, then refresh the browser.

  2. Vaya a http://<app-name>.azurewebsites.net/admin.Browse to http://<app-name>.azurewebsites.net/admin. Inicie sesión con las credenciales de superusuario de Django de la sección anterior (root y Pollsdb1).Sign in using Django superuser credentials from the previous section (root and Pollsdb1). En Polls (Sondeos), seleccione Add (Agregar) junto a Questions (Preguntas) y cree una pregunta de sondeo con algunas opciones.Under Polls, select Add next to Questions and create a poll question with some choices.

  3. Vaya de nuevo a http://<app-name>.azurewebsites.net para confirmar que las preguntas se presentan ahora al usuario.Browse again to http://<app-name>.azurewebsites.net to confirm that the questions are now presented to the user. Responda a las preguntas como desee para generar algunos datos en la base de datos.Answer questions however you like to generate some data in the database.

¡Enhorabuena!Congratulations! Está ejecutando una aplicación web de Django de Python en Azure App Service para Linux, con una base de datos de Postgres activa.You're running a Python Django web app in Azure App Service for Linux, with an active Postgres database.

¿Tiene problemas?Having issues? Póngase en contacto con nosotros.Let us know.

Nota

App Service detecta un proyecto de Django mediante la búsqueda de un archivo wsgi.py en cada subcarpeta, que manage.py startproject crea de forma predeterminada.App Service detects a Django project by looking for a wsgi.py file in each subfolder, which manage.py startproject creates by default. Cuando App Service encuentra ese archivo, carga la aplicación web de Django.When App Service finds that file, it loads the Django web app. Para obtener más información, consulte Configuración de una imagen de Python integrada.For more information, see Configure built-in Python image.

5. Cambios en el código y reimplementación5. Make code changes and redeploy

En esta sección, realizará cambios locales en la aplicación y volverá a implementar el código en App Service.In this section, you make local changes to the app and redeploy the code to App Service. En el proceso, se configura un entorno virtual de Python que admite el trabajo en curso.In the process, you set up a Python virtual environment that supports ongoing work.

5.1 Ejecución de la aplicación de forma local5.1 Run the app locally

Ejecute los siguientes comandos en una ventana de terminal.In a terminal window, run the following commands. Asegúrese de seguir las indicaciones al crear el superusuario:Be sure to follow the prompts when creating the superuser:

# Configure the Python virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt
# Run Django migrations
python manage.py migrate
# Create Django superuser (follow prompts)
python manage.py createsuperuser
# Run the dev server
python manage.py runserver

Una vez que la aplicación web esté completamente cargada, el servidor de desarrollo de Django proporcionará la dirección URL de la aplicación local en el mensaje "Starting development server at http://127.0.0.1:8000/.Once the web app is fully loaded, the Django development server provides the local app URL in the message, "Starting development server at http://127.0.0.1:8000/. Quit the server with CTRL-BREAK" (Iniciando el servidor de desarrollo en https… Salga del servidor con Ctrl+Interrumpir).Quit the server with CTRL-BREAK".

Ejemplo de salida del servidor de desarrollo de Django

Pruebe la aplicación localmente con los pasos siguientes:Test the app locally with the following steps:

  1. Vaya a http://localhost:8000 en un explorador, que debería mostrar un mensaje que indica que no hay sondeos disponibles.Go to http://localhost:8000 in a browser, which should display the message "No polls are available".

  2. Vaya a http:///localhost:8000/admin e inicie sesión con el usuario administrador que creó previamente.Go to http:///localhost:8000/admin and sign in using the admin user you created previously. En Sondeos, vuelva a seleccionar Agregar junto a Preguntas y cree una pregunta de sondeo con opciones.Under Polls, again select Add next to Questions and create a poll question with some choices.

  3. Vaya a http://localhost: 8000 de nuevo y responda la pregunta para probar la aplicación.Go to http://localhost:8000 again and answer the question to test the app.

  4. Detenga el servidor de Django presionando CTRL+C.Stop the Django server by pressing Ctrl+C.

Cuando se ejecute localmente, la aplicación usará una base de datos de Sqlite3 local y no interferirá con la base de datos de producción.When running locally, the app is using a local Sqlite3 database and doesn't interfere with your production database. También puede usar una base de datos de PostgreSQL local, si lo desea, para simular mejor el entorno de producción.You can also use a local PostgreSQL database, if desired, to better simulate your production environment.

¿Tiene problemas?Having issues? Póngase en contacto con nosotros.Let us know.

5.2 Actualización de la aplicación5.2 Update the app

En polls/models.py, busque la línea que comienza con choice_text y cambie el parámetro max_length a 100:In polls/models.py, locate the line that begins with choice_text and change the max_length parameter to 100:

# Find this line of code and set max_length to 100 instead of 200
choice_text = models.CharField(max_length=100)

Dado que ha cambiado el modelo de datos, cree una nueva migración de Django y migre la base de datos:Because you changed the data model, create a new Django migration and migrate the database:

python manage.py makemigrations
python manage.py migrate

Vuelva a ejecutar el servidor de desarrollo con python manage.py runserver y pruebe la aplicación en http://localhost:8000/admin:Run the development server again with python manage.py runserver and test the app at to http://localhost:8000/admin:

Vuelva a detener el servidor web de Django con CTRL+C.Stop the Django web server again with Ctrl+C.

¿Tiene problemas?Having issues? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.Refer first to the Troubleshooting guide, otherwise, let us know.

5.3 Nueva implementación del código en Azure5.3 Redeploy the code to Azure

Ejecute el comando siguiente en la raíz del repositorio:Run the following command in the repository root:

az webapp up

Este comando usa los parámetros almacenados en la memoria caché del archivo .azure/config.This command uses the parameters cached in the .azure/config file. Dado que App Service detecta que la aplicación ya existe, simplemente vuelve a implementar el código.Because App Service detects that the app already exists, it just redeploys the code.

¿Tiene problemas?Having issues? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.Refer first to the Troubleshooting guide, otherwise, let us know.

5.4 Nueva ejecución de migraciones en Azure5.4 Rerun migrations in Azure

Dado que ha realizado cambios en el modelo de datos, debe volver a ejecutar las migraciones de base de datos en App Service.Because you made changes to the data model, you need to rerun database migrations in App Service.

Abra una sesión de SSH de nuevo en el explorador. Para ello, vaya a https://<app-name>.scm.azurewebsites.net/webssh/host.Open an SSH session again in the browser by navigating to https://<app-name>.scm.azurewebsites.net/webssh/host. Luego, ejecute los siguientes comandos:Then run the following commands:

cd $APP_PATH
source /antenv/bin/activate
pip install -r requirements.txt
python manage.py migrate

¿Tiene problemas?Having issues? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.Refer first to the Troubleshooting guide, otherwise, let us know.

5.5 Revisión de la aplicación en producción5.5 Review app in production

Vaya a http://<app-name>.azurewebsites.net y vuelva a probar la aplicación en el entorno de producción.Browse to http://<app-name>.azurewebsites.net and test the app again in production. (Dado que solo ha cambiado la longitud de un campo de la base de datos, el cambio solo se aprecia si intenta especificar una respuesta más larga al crear una pregunta).(Because you changed only the length of a database field, the change is only noticeable if you try to enter a longer response when creating a question.)

¿Tiene problemas?Having issues? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.Refer first to the Troubleshooting guide, otherwise, let us know.

6. Transmisión de registros de diagnóstico6. Stream diagnostic logs

Puede acceder a los registros de la consola generados desde dentro del contenedor que hospeda la aplicación en Azure.You can access the console logs generated from inside the container that hosts the app on Azure.

Ejecute el siguiente comando de la CLI de Azure para ver la secuencia de registro.Run the following Azure CLI command to see the log stream. Este comando usa los parámetros almacenados en la memoria caché del archivo .azure/config.This command uses parameters cached in the .azure/config file.

az webapp log tail

Si no ve los registros de la consola de inmediato, vuelve a comprobarlo en 30 segundos.If you don't see console logs immediately, check again in 30 seconds.

Para detener el streaming de registro en cualquier momento, escriba Ctrl+C.To stop log streaming at any time, type Ctrl+C.

¿Tiene problemas?Having issues? Póngase en contacto con nosotros.Let us know.

Nota

También puede inspeccionar los archivos de registro desde el explorador en https://<app-name>.scm.azurewebsites.net/api/logs/docker.You can also inspect the log files from the browser at https://<app-name>.scm.azurewebsites.net/api/logs/docker.

az webapp up activa el registro predeterminado.az webapp up turns on the default logging for you. Por motivos de rendimiento, este registro se desactiva después de un tiempo, pero vuelve a activarse cada vez que se vuelve a ejecutar az webapp up.For performance reasons, this logging turns itself off after some time, but turns back on each time you run az webapp up again. Para activarlo manualmente, ejecute el siguiente comando:To turn it on manually, run the following command:

az webapp log config --docker-container-logging filesystem

7. Administración de una aplicación en Azure Portal7. Manage your app in the Azure portal

En Azure Portal, busque el nombre de la aplicación y seleccione la aplicación en los resultados.In the Azure portal, search for the app name and select the app in the results.

Vaya a la aplicación Python Django en Azure Portal

De forma predeterminada, el portal muestra la página Información general de la aplicación, que proporciona una vista del rendimiento general.By default, the portal shows your app's Overview page, which provides a general performance view. En ella puede también realizar tareas de administración básicas como examinar, detener, reiniciar y eliminar.Here, you can also perform basic management tasks like browse, stop, restart, and delete. Las pestañas del lado izquierdo de la página muestran las diferentes páginas de configuración que puede abrir.The tabs on the left side of the page show the different configuration pages you can open.

Administración de la aplicación Python Django en la página de información general de Azure Portal

¿Tiene problemas?Having issues? Consulte primero la Guía de solución de problemas y, si eso no funciona, háganoslo saber.Refer first to the Troubleshooting guide, otherwise, let us know.

8. Limpieza de recursos8. Clean up resources

Si desea mantener la aplicación o continuar con los tutoriales adicionales, vaya a Pasos siguientes.If you'd like to keep the app or continue to the additional tutorials, skip ahead to Next steps. De lo contrario, para evitar incurrir en cargos adicionales, puede eliminar la creación del grupo de recursos para este tutorial:Otherwise, to avoid incurring ongoing charges you can delete the resource group create for this tutorial:

az group delete --no-wait

Este comando usa el nombre del grupo de recursos almacenado en la memoria caché del archivo .azure/config.The command uses the resource group name cached in the .azure/config file. Al eliminar el grupo de recursos, también se desasignan y eliminan todos los recursos que contiene.By deleting the resource group, you also deallocate and delete all the resources contained within it.

La eliminación de todos los recursos puede llevar tiempo.Deleting all the resources can take some time. El argumento --no-wait permite que el comando devuelva resultados inmediatamente.The --no-wait argument allows the command to return immediately.

¿Tiene problemas?Having issues? Póngase en contacto con nosotros.Let us know.

Pasos siguientesNext steps

Obtenga información sobre cómo asignar un nombre DNS personalizado a la aplicación:Learn how to map a custom DNS name to your app:

Obtenga información sobre cómo App Service ejecuta una aplicación de Python:Learn how App Service runs a Python app: