Aplicativos Django: tudo o que você precisa saber em 2022

Publicados: 2021-01-04

O Django é um dos principais frameworks python construídos por profissionais que incentivam o design pragmático e o desenvolvimento rápido para desenvolvedores web. É rápido, seguro e um favorito entre os desenvolvedores da web. O Django possui um registro de aplicativos já instalados que armazena a configuração e ajuda a fornecer introspecção. Ele mantém uma lista abrangente de modelos disponíveis. O registro é chamado de aplicativos. Os aplicativos Django estão disponíveis em 'django.apps'

>>> de django.apps importar aplicativos

>>> apps.get_app_config('admin').verbose_name

'Administração'

Índice

Projetos Django

Qualquer aplicativo Django pode ser denominado como um projeto. É definido por um módulo de configurações. No entanto, ele contém várias outras coisas também. Por exemplo, se você executar django-admin startproject mysite, você obterá um diretório de projeto mysite. Isso conterá um pacote Python mysite com setting.py, urls.py, asgi.py e wsgi.py. O pacote geralmente pode ser estendido para incluir CSS, fixture e outros templates não associados a nenhum aplicativo específico.

O diretório raiz do projeto ou aquele que possui manage.py geralmente contém todos os aplicativos do projeto que não são instalados separadamente.

Aplicativos Django

Aplicação significa um pacote de Python que possui alguns recursos. Pode ser reutilizado em vários projetos. Os aplicativos podem ser combinações de visualizações, modelos, URLs de modelos, arquivos estáticos, etc. Eles geralmente são conectados em projetos com a configuração INSTALLED-APPS . Muitas vezes, pode ser conectado a outros mecanismos, opcionalmente, como URLconfs, que é a configuração de MIDDLEWARE .

Leia: Salário do desenvolvedor Django na Índia

O aplicativo Django é um conjunto de códigos que cria interações com várias partes de um framework específico. Ele não possui um objeto Aplicativo. Às vezes, o Django pode precisar interagir com certos aplicativos para introspecção ou configuração. Portanto, há metadados no AppConfig para aplicativos instalados. Um pacote de projeto também pode ser considerado como um aplicativo e também pode ter modelos.

Configurando aplicativos Django

Se você deseja configurar um aplicativo, você deve subclassificar AppConfig e, em seguida, adicionar uma linha pontilhada a isso em INSTALLED_Apps. Quando obtém a linha pontilhada, o Django começa a verificar a variável default_app_config . Uma vez definido, torna-se a subclasse AppConfig para esse aplicativo específico. Se nenhum default_app_config for feito, o Django usará a classe base AppConfig .

Leia também: Diferença entre pilha completa e pilha média

Para autores de aplicativos Django

Digamos que você esteja desenvolvendo um aplicativo conectável 'Rock 'n' roll'. Então, você pode desenvolver um nome da seguinte maneira:

# rock_n_roll/apps.py

de django.apps importe AppConfig

class RockNRollConfig(AppConfig):

nome = 'rock_n_roll'

verbose_name = “Rock 'n' roll”

Você também poderá carregá-lo como uma subclasse AppConfig usando:

# rock_n_roll/__init__.py

default_app_config = 'rock_n_roll.apps.RockNRollConfig'

Assim, RockNRollConfig pode ser usado quando 'rock_n_roll' estiver presente nos aplicativos instalados. Ele irá ajudá-lo a fazer uso dos recursos do AppConfig sem que os usuários precisem fazer a atualização no INSTALLED_APPS.

Para usuários do aplicativo

Digamos que você esteja usando o aplicativo Rock 'n' roll em um projeto chamado antologia. Agora, você quer que apareça como Jazz Manouche antes disso. Então, você pode seguir estes passos:

# antologia/apps.py

de rock_n_roll.apps importe RockNRollConfig

class JazzManoucheConfig(RockNRollConfig):

verbose_name = “Jazz Manouche”

# antologia/configurações.py

INSTALLED_APPS = [

'anthology.apps.JazzManoucheConfig',

#…

]

classe AppConfig

Os metadados de um aplicativo são armazenados em objetos de configuração do aplicativo. Alguns desses atributos são configurados nas subclasses AppConfig e são definidos como somente leitura ou pelo Django.

Atributos configuráveis

AppConfig.name

Caminho: django.contrib.admin

Ajuda na definição do aplicativo no qual a configuração é aplicada. Ele é definido nas subclasses AppConfig. Único em um projeto Django.

AppConfig.label

Nome: administrador

Ajuda na reclassificação de um aplicativo, especialmente se dois deles tiverem rótulos conflitantes. Ele se torna o último componente de um nome por padrão. Deve ser um identificador válido do Python. Único em projetos Django.

AppConfig.verbose_name

Nome: Administração

O padrão é: label.title()

AppConfig.path

Exemplo de diretório de aplicativo: '/usr/lib/pythonX.Y/dist-packages/django/contrib/admin'

Em muitos casos, o Django pode detectá-lo e configurá-lo automaticamente, mas você pode substituir o atributo class explicitamente por meio da subclasse AppConfig.

Atributos somente leitura

AppConfig.module

Exemplo de módulo raiz: <module 'django.contrib.admin' de 'django/contrib/admin/__init__.py'>

AppConfig.models_module

Exemplo de módulo com modelos: <module 'django.contrib.admin.models' de 'django/contrib/admin/models.py'>

Também pode ser Nenhum se não contiver modelos.

Métodos

AppConfig.get_models()

Isso ajudará a retornar uma classe de modelo iterável para o aplicativo. Isso exigirá que o registro do aplicativo seja completamente preenchido.

AppConfig.get_model

Retorna o modelo específico sem distinção entre maiúsculas e minúsculas: model_name. Model_name

Ajuda a gerar um LookupError se não existir um modelo específico. Isso exigirá que o registro do aplicativo seja completamente preenchido.

AppConfig.ready()

Pode ajudar a substituir o método e, portanto, executar tarefas de inicialização, como registrar sinais. Pode ser chamado assim que o registro estiver completamente preenchido. No entanto, você não pode importar modelos no nível do módulo em que as classes de AppConfig são definidas. Você pode importá-los, no entanto, em ready(), que usa get_model() ou declaração de importação.

Pacotes de namespace usados ​​como aplicativos

Quando um pacote Python não tem __init__.py, eles são conhecidos como pacotes de namespace. Eles podem ser distribuídos por vários diretórios e locais em sys.path. O aplicativo Django precisará de um sistema de arquivos base de sinal no qual o Django baseado na configuração procurará ativos estáticos, modelos, etc. Portanto, o aplicativo Django só pode ser usado se um destes for verdadeiro:

  • O pacote de namespace tem um único local.
  • A classe AppConfig que é usada para configurar o aplicativo tem um atributo de classe de caminho.

Se nenhuma das condições for atendida, o Django mostrará ImproperlyConfigured.

Registro de aplicativos Django

Certas APIs públicas são fornecidas pelo registro do aplicativo. Estes são alguns dos métodos, embora possam mudar:

aplicativos.prontos

Quando o atributo booleano é definido como True e o registro é completamente preenchido e todos os métodos AppConfig.ready() são, portanto, chamados.

apps.get_app_configs()

Ele retornará um iterável de instâncias do AppConfig.

apps.get_app_config(app_label)

Ele retornará um AppConfig para o aplicativo que possui um determinado app_label. Se nenhum aplicativo existir, ele gerará um LookupError.

apps.is_installed( Ele estará verificando se existe um nome do aplicativo fornecido no registro atual. app_name será um nome completo do aplicativo, exemplo: django.contrib.admin

apps.get_model( Ele retornará o modelo com o model_name e app_label fornecidos. Se nenhum aplicativo existir, ele gerará um LookupError.

Processo de inicialização

Então, agora a questão é como carregar aplicativos django. Conforme o Django é iniciado, django.setup() irá preencher o registro.

setup( set_prefix=True )

As configurações do Django ocorrem:

  • Ao primeiro carregamento das configurações
  • Configuração de registro
  • Se set_prefix for true, o prefixo de script de revólver de URL se tornará FORCE_SCRIPT_NAME se definido ou não.
  • O registro do aplicativo é inicializado.

A chamada automática da função ocorre:

  • Quando o servidor HTTP está sendo executado através de um suporte WSGI do Django
  • Quando o comando de gerenciamento é chamado.

Solucionar problemas

Alguns problemas comuns que alguém pode enfrentar são:

  • AppRegistryNotReady: acontece durante a importação de uma configuração de aplicativo ou módulo de modelos que aciona o código que não depende do registro do aplicativo. Se você executar consultas de banco de dados com ORM, esse problema pode ocorrer.
  • ImportError: cannot import name … – Ocorre quando as sequências de importação terminam em um loop. Você pode eliminar o processo minimizando as dependências entre os módulos dos modelos.
  • Django.contrib.admin causa descoberta automática de módulos de administração. Altere INSTALLED_APPS de django.contrib.admin para django.contrib.admin.apps.SimpleAdminConfig para evitar isso.

Espero que agora você possa integrar aplicativos Django em seu desenvolvimento web facilmente.

Obtenha o curso de desenvolvimento de software das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

Conclusão

Se você estiver interessado em aprender mais sobre o Django e outras linguagens e ferramentas para desenvolvedores full stack, confira o Executive PG Program in Full-stack Software Development do upGrad & IIIT-B, projetado para profissionais que trabalham e oferece mais de 500 horas de treinamento rigoroso, Mais de 9 projetos e atribuições, status de ex-alunos do IIIT-B, projetos práticos práticos e assistência de trabalho com as principais empresas.

Prepare-se para uma carreira do futuro

Inscreva-se agora para Mestrado em Engenharia de Software