minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Curtir + Seguir + Coletar = Aprendeu
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.
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
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.
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.
- Password:
- 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.
- This password is too common.
- This password is entirely numeric.
- Bypass password validation and create user anyway? [y/N]: y
- 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.
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
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']
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.
Clique em "Tabelas de usuários" para ver as informações sobre esta tabela no banco de dados.
Você pode clicar no botão "Adicionar" para adicionar novos dados a esta tabela.
Você também pode modificar e excluir dados especificados.
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
de django.contrib importar admin de blog.models importar artigo
class ArticleAdmin(admin.ModelAdmin): # Conteúdo a ser exibido list_display = ['id', 'title']
admin.site.register(Artigo, ArticleAdmin) ```
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.
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.
Se você não tiver certeza sobre o conteúdo de todo o projeto, pode consultar o que compilei"Coluna Django"。
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.
Abra o projeto settings.py
arquivo, encontradoLANGUAGE_CODE
, defina seu valor como'zh-hans'
.e então encontreTIME_ZONE
configure-o paraAsia/Shanghai
。
```Python
CÓDIGO_DE_IDIOMA = 'zh-hans'
TIME_ZONE = 'Ásia/Xangai' ```
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.
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
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
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.
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
de django.db importar modelos
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)
- class Meta:
- # 自定义表名
- db_table = 'user'
- # 表别名
- verbose_name = '用户表'
- verbose_name_plural = '用户表'
```
Atualize a página e você verá que o "s" depois de "Tabela de usuários" desapareceu.
blog
Mesma razão.
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.
Devemos exibir o nome de usuário.
Vamos modificá-lo primeiro blog
Os campos a serem exibidos.
```Python
de django.contrib importar admin de blog.models importar artigo
def get_author(obj): retornar obj.usuário.nomedeusuário
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'
admin.site.register(Artigo, ArticleAdmin) ```
Associe a chave estrangeira ao método get_author username
Os campos são exibidos.
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
de django.db importar modelos
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)
- class Meta:
- # 自定义表名
- db_table = 'user'
- # 表别名
- verbose_name = '用户表'
- verbose_name_plural = '用户表'
-
- # 返回用户名
- def __str__(self):
- 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.
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.
```Python
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.
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
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.
Isso é tudo para este artigo. No próximo artigo apresentarei como carregar as informações do banco de dados na primeira página.
Curtir + Seguir + Coletar = Aprendeu