Compartilhamento de tecnologia

"Django" vem com seu próprio backend

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


tema: smartblue

Introdução a este artigo

Curtir + Seguir + Coletar = Aprendeu

00.png

Falei sobre isso no artigo anterior Django operarMySQL O método explica como criar um modelo e como adicionar, excluir, modificar e consultar o banco de dados. Mas você precisa escrever código toda vez que modifica os dados, o que é um tanto problemático.

Existe uma maneira mais simples?

Alguns alguns,Django Na verdade, ele vem com um backend, que é uma interface gráfica, e você pode operar facilmente vários conteúdos de dados nele.

A seguir, vamos falar sobre como usar esse back-end integrado.

Configure o endereço de roteamento em segundo plano

Na verdade criando Django Durante o projeto, já configuramos o endereço de roteamento em segundo plano para nós.

Se você seguir meu artigo anterior passo a passo, o roteamento em segundo plano poderá ser excluído. Não importa, apenas invente.

Abra o projeto urls.py arquivo, encontradourlpatterns Esta variável é usada para preencher o roteamento em segundo plano.

```Python

O arquivo de roteamento do projeto urls.py

de django.urls caminho de importação de blog.views importar blogIndex

urlpatterns = [ # Outras rotas são omitidas # A frase a seguir é o caminho de roteamento para configurar o plano de fundo ('admin/', admin.site.urls) ] ```

Após a conclusão da configuração, inicie o projeto e abra-o no navegador http://127.0.0.1:8000/admin/ Você pode ver a página de login em segundo plano.

01.png

Crie uma conta de administrador

Se houver uma página de login, você deverá ter uma conta correspondente para fazer login.

Portanto, precisamos primeiro criar uma conta de supergerenciamento.

Abra o terminal, entre no diretório do projeto e digite o seguinte comando para criar uma conta de supergerenciamento.

python manage.py createsuperuser

Em seguida, o terminal retornará esta linha de informações para você, solicitando que você insira o nome de usuário (conta) de supergerenciamento

Username (leave blank to use 'xxx'): admin

'xxx' aqui é o nome do meu computador, você pode inserir a conta de supergerenciamento após os dois pontos.O que eu inseri aqui éadmin

Depois de inserir seu nome de usuário, ele continuará solicitando que você insira seu endereço de e-mail.

Email address: 123@qq.com

Depois de inserir seu endereço de e-mail, você será solicitado a inserir sua senha duas vezes.

  1. Password:
  2. Password (again):

A senha que eu digito aqui é 12345678, isso me lembra de maneira inteligente senhas que são muito comuns, mas eu digito y e continuo com senhas tão simples.

  1. This password is too common.
  2. This password is entirely numeric.
  3. Bypass password validation and create user anyway? [y/N]: y
  4. Superuser created successfully.

Ver Superuser created successfully. Esta frase significa que a conta foi criada com sucesso.

Agora abra no navegador http://127.0.0.1:8000/admin/, entrada da conta admin, entrada de senha 12345678 Você pode fazer login com sucesso.

02.png

Histórico de associação de modelo

Anteriormente usamos código para operar o banco de dados, o que não é tão conveniente.

Django Fornece uma maneira de vincularmos o modelo do aplicativo ao plano de fundo, para que possamos operar dados diretamente na interface de plano de fundo.

Criado a partir do artigo anterior account Aplique como exemplo.

existir account encontrado no aplicativoadmin.py arquivo, escreva o seguinte código.

```Python

conta/admin.py

de django.contrib importar admin de account.models importar usuário

class UserAdmin(admin.ModelAdmin): # Conteúdo a ser exibido list_display = ['nomedeusuário', 'email']

Vincule o modelo User ao UserAdmin

admin.site.register(Usuário, UserAdmin) ```

Precisa ser apresentado aqui primeiro admin eUser, porque queremos account O modelo de aplicativo está associado ao backend.

Crie um arquivo chamado UserAdmin Classe, escreva nelelist_display = ['username', 'email'] , significando exibir na página de fundousername eemail esses dois campos.

afinal admin.site.register(User, UserAdmin) significa paraUser O modelo e o back-end estão vinculados.

Execute o projeto e abra http://127.0.0.1:8000/admin/ E faça login, você poderá ver o modelo que acabou de vincular.

03.png

Clique em "Tabelas de usuários" para ver as informações sobre esta tabela no banco de dados.

04.png

Você pode clicar no botão "Adicionar" para adicionar novos dados a esta tabela.

05.png

Você também pode modificar e excluir dados especificados.

06.png

Os dados modificados na página de fundo afetarão diretamente os dados do banco de dados.

Da mesma forma, coloque blog O modelo de aplicativo está associado ao backend. A operação aqui é a mesma de antes, então não vou explicar novamente.

```Python

blog/admin.py

de django.contrib importar admin de blog.models importar artigo

Registre seus modelos aqui.

class ArticleAdmin(admin.ModelAdmin): # Conteúdo a ser exibido list_display = ['id', 'title']

Vincule o modelo User ao UserAdmin

admin.site.register(Artigo, ArticleAdmin) ```

07.png

Vamos criar um artigo e dar uma olhada.

Clique no botão Adicionar ao lado de "Tabelas de informações do artigo" e preencha o seguinte conteúdo.

08.png

Clique SAVE Após pressionar o botão, os dados são gravados no banco de dados. Retorne à página da lista de “Tabelas de informações do artigo” para ver os dados que acabaram de ser gravados.

09.png

Se você não tiver certeza sobre o conteúdo de todo o projeto, pode consultar o que compilei"Coluna Django"

Configuração básica do back-end

Nas operações anteriores, trabalhadores atentos podem ter notado alguns problemas, como por que a interface está em inglês? Por que existe um “s” após o nome da tabela?Por que o campo Usuário opcional ao criar um artigo não é o nome do usuário, masUser object(1)

A seguir resolveremos esses problemas um por um.

Definir fuso horário e idioma

Abra o projeto settings.py arquivo, encontradoLANGUAGE_CODE , defina seu valor como'zh-hans' .e então encontreTIME_ZONE configure-o paraAsia/Shanghai

```Python

configurações.py

linguagem

CÓDIGO_DE_IDIOMA = 'zh-hans'

Fuso horário

TIME_ZONE = 'Ásia/Xangai' ```

10.png

Altere o nome da coluna para chinês

Mas neste momento ACCOUNT eBLOG Ainda em inglês, aquiDjango Não pode ser traduzido diretamente para o chinês. Você precisa configurar aliases para esses dois aplicativos.

11.png

A configuração fica na própria aplicação de cada aplicação apps.py arquivo, atravésverbose_name Variável para personalizar o nome da coluna.

por account Aplique como exemplo.

```Python

conta/apps.py

de django.apps importar AppConfig

classe AccountConfig(AppConfig): padrãoautofield = 'django.db.models.BigAutoField' name = 'account' verbose_name = 'Gerenciamento de usuários' ```

blog O mesmo se aplica.

```Python

blog/aplicativos.py

de django.apps importar AppConfig

classe BlogConfig(AppConfig): padrãoautofield = 'django.db.models.BigAutoField' name = 'blog' verbose_name = 'Gerenciamento de artigos' ```

Neste momento, atualize a página e você verá que o nome da coluna foi alterado.

12.png

excluir forma plural

O "s" após o nome da tabela é Django Ele vem junto. Para deletar esse "s", você também precisa configurar o alias da tabela.

No arquivo de modelo de cada aplicativo (models.py) configurado em Meta informativoverbose_name_plural

por account Aplique como exemplo.

```Python

conta/modelos.py

de django.db importar modelos

Crie uma tabela de usuários

classe Usuário(modelos.Modelo): id = modelos.AutoField(primáriokey = True) # nome de usuário = models.CharField('nome de usuário', maxlength=30, null=True, blank=True, unique=True) # Senha senha = models.CharField('password', max_length=30) # Email email = models.EmailField('Email', unique=True, null= Verdadeiro, em branco=Verdadeiro)

  1. class Meta:
  2. # 自定义表名
  3. db_table = 'user'
  4. # 表别名
  5. verbose_name = '用户表'
  6. verbose_name_plural = '用户表'

```

Atualize a página e você verá que o "s" depois de "Tabela de usuários" desapareceu.

13.png

blog Mesma razão.

Mostrar campos de chave estrangeira

Quando adicionamos um artigo, precisamos inserir e selecionar o autor do artigo. O autor da tabela do artigo está associado à tabela do usuário.

Ao adicionar um autor, a página exibe diretamente o nome “Objeto Usuário”. Se o número de usuários aumentar, não conseguiremos dizer quem é quem.

14.png

Devemos exibir o nome de usuário.

Vamos modificá-lo primeiro blog Os campos a serem exibidos.

```Python

blog/admin.py

de django.contrib importar admin de blog.models importar artigo

Obter autor

Este objeto obj é usado para receber instâncias de artigos

def get_author(obj): retornar obj.usuário.nomedeusuário

Registre seus modelos aqui.

class ArticleAdmin(admin.ModelAdmin): # Conteúdo a ser exibido # Você pode usar get here autor é substituído por nome de usuário. Não há necessidade de adicionar aspas simples ou parênteses aqui. #django está usando lista Ao exibir, um parâmetro será passado ao método por padrão. listaexibir = ['id', obterautor, 'título', 'conteúdo']

pegarautor.curtodescrição = 'Autor'

Vincule o modelo User ao UserAdmin

admin.site.register(Artigo, ArticleAdmin) ```

Associe a chave estrangeira ao método get_author username Os campos são exibidos.

15.png

Neste ponto poderemos ver quem é o autor deste artigo. Mas ainda precisamos exibir o nome de usuário na página de edição.

Precisa modificar neste momento User Somente modelos servirão.

```Python

conta/modelos.py

de django.db importar modelos

Crie uma tabela de usuários

classe Usuário(modelos.Modelo): id = modelos.AutoField(primáriokey = True) # nome de usuário = models.CharField('nome de usuário', maxlength=30, null=True, blank=True, unique=True) # Senha senha = models.CharField('password', max_length=30) # Email email = models.EmailField('Email', unique=True, null= Verdadeiro, em branco=Verdadeiro)

  1. class Meta:
  2. # 自定义表名
  3. db_table = 'user'
  4. # 表别名
  5. verbose_name = '用户表'
  6. verbose_name_plural = '用户表'
  7. # 返回用户名
  8. def __str__(self):
  9. return self.username

```

existir account/models.py Adicione no final__str__ método, retornousername

Neste momento, o nome do usuário pode ser visto na página de edição das informações do artigo.

16.png

Links de salto editáveis ​​personalizados

Na página de gerenciamento de artigos, se desejar editar um artigo, basta clicar no campo "ID" para ir para a página de edição.Se quiser ir para a página de edição clicando em outros campos, você precisa configurá-lo manualmente.blog/admin.py Por exemplo, quero clicar em “TÍTULO” para ir para a página de edição.

17.png

```Python

blog/admin.py

Omitir algum código

class ArticleAdmin(admin.ModelAdmin): # Lista de conteúdo a ser exibidoexibir = ['id', obterautor, 'título', 'conteúdo'] # lista de campos saltáveismostrarlinks = ['id', 'title'] # Omita algum código```

eu estou aqui ArticleAdmin adicionado emlist_display_links = ['id', 'title'], indicando clique id etitle Você pode pular para a página de edição.

atributo somente leitura

Ao editar conteúdo, não queremos que alguns campos sejam modificáveis. Por exemplo, o ID do blog não pode ser modificado.

permitido blog/admin.py Adicionar emreadonly_fields Especifica campos que não podem ser modificados.

```Python

blog/admin.py

Omitir algum código

class ArticleAdmin(admin.ModelAdmin): # Atributo somente leitura readonly_fields = ['id'] # Omitir algum código````

Ao editar neste momento, o valor do campo id não pode ser modificado.

18.png


Isso é tudo para este artigo. No próximo artigo apresentarei como carregar as informações do banco de dados na primeira página.

IMG_8982.GIF

Curtir + Seguir + Coletar = Aprendeu