Latest web development tutorials

Ferramentas de gestão Django admin

Django fornece uma ferramentas de gestão baseadas na web.

ferramentas de gerenciamento automatizado Django fazem parte de django.contrib. Você pode vê-lo em settings.py nos itens INSTALLED_APPS:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)

django.contrib é um conjunto de recursos enorme, que faz parte da base de código do Django.


Ferramenta de gerenciamento de ativação

Nós geralmente criado em urls.py automaticamente na hora de criar o projeto, precisamos apenas para remover comentários.

Os itens de configuração são as seguintes:

from django.contrib import admin
admin.autodiscover()

# And include this URLpattern...
urlpatterns = patterns('',
    # ...
    (r'^admin/', include(admin.site.urls)),
    # ...
)

Quando está tudo configurado, ferramentas de gerenciamento de Django pode ser executado.


Usando Ferramentas de Gestão

Inicie o servidor de desenvolvimento, e, em seguida, acessar o navegador: http: // yoursite: 8000 / admin /, para obter a seguinte tela:

Você pode comandar python manage.py createsuperuser para criar um super usuário, como segue:

# python manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
[root@solar HelloWorld]#

Depois de inserir um nome de usuário e senha de login, a interface é a seguinte:

Para tornar a interface de administração para gerenciar um modelo de dados, é preciso registrar o modelo de dados para admin. Por exemplo, podemos ter sido criado antes do teste modelo TestModel. Modificar TestModel / admin.py:

from django.contrib import admin
from TestModel.models import Test

# Register your models here.
admin.site.register(Test)

Você pode ver a folha de dados de atualização Testmodel:


modelos complexos

páginas de administração poderosos, totalmente capazes de lidar com modelos de dados mais complexos.

Um primeiro aumento em mais complexa modelos de dados TestModel / models.py em:

from django.db import models

# Create your models here.
class Contact(models.Model):
    name   = models.CharField(max_length=200)
    age    = models.IntegerField(default=0)
    email  = models.EmailField()
    def __unicode__(self):
        return self.name

class Tag(models.Model):
    contact = models.ForeignKey(Contact)
    name    = models.CharField(max_length=50)
    def __unicode__(self):
        return self.name

Existem duas tabelas. Contato Tag para uma chave externa. O contacto pode corresponder a uma pluralidade de Tag.

Nós também podemos ver muitos atribuem tipo não visto antes, como IntegerField armazenar um número inteiro.

Em TestModel / admin.py registrar vários modelos e show:

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
admin.site.register([Test, Contact, Tag])

página de administração de atualização, mostram os seguintes resultados:

Nas ferramentas de gerenciamento acima, podemos modelar operações complexas.


formulário personalizado

Nós podemos personalizar as páginas de administração, em vez de a página padrão. Por exemplo, o acima "add" página. Queremos mostrar apenas o nome e seção de e-mail. Modificar TestModel / admin.py:

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class ContactAdmin(admin.ModelAdmin):
    fields = ('name', 'email')

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test, Tag])

ContactAdmin acima código define uma classe para ilustrar a página de gerenciamento de formato de exibição.

Dentro dos campos de propriedade define os campos a serem exibidos.

Como tal os dados do modelo corresponde Contacte o nosso sinal quando eles precisam ser registrados junto. Mostrar como se segue:

Também pode bloquear campos de entrada, cada campo também pode definir seu próprio formato. Modificar TestModel / admin.py como se segue:

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class ContactAdmin(admin.ModelAdmin):
    fieldsets = (
        ['Main',{
            'fields':('name','email'),
        }],
        ['Advance',{
            'classes': ('collapse',), # CSS
            'fields': ('age',),
        }]
    )

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test, Tag])

A seção acima é dividido em duas partes, principal e Advance. aulas descrito na seção formato de CSS. Aqui, deixe avanço parcialmente escondido:

Antecedência próxima seção tem um botão Mostrar para a expansão, ampliou Clique em Ocultar a esconder, como mostrado abaixo:


Inline (em linha) de exibição

Contato Tag está acima das teclas externas, para que haja uma relação de referência externa.

Na exibição da página padrão, os dois se separaram, incapaz de refletir a relação de subordinação. Podemos usar o display inline, de modo Tag anexado à página Editar contato é exibida.

Modificar TestModel / admin.py:

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class TagInline(admin.TabularInline):
    model = Tag

class ContactAdmin(admin.ModelAdmin):
    inlines = [TagInline]  # Inline
    fieldsets = (
        ['Main',{
            'fields':('name','email'),
        }],
        ['Advance',{
            'classes': ('collapse',),
            'fields': ('age',),
        }]

    )

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test])

Mostrar como se segue:


Exibe uma lista de página

Digite o número nos registros de contato, página do contato lista se parece com isso:

Nós também pode personalizar a exibição da página, tais como exibição mais colunas na lista, basta adicionar list_display propriedade em ContactAdmin em:

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class ContactAdmin(admin.ModelAdmin):
    list_display = ('name','age', 'email') # list

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test, Tag])

Atualizar a exibição da página da seguinte forma:

recursos de pesquisa ao gerenciar um grande número de registros muito, podemos usar a barra de pesquisa para aumentar search_fields página para a lista:

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class ContactAdmin(admin.ModelAdmin):
    list_display = ('name','age', 'email') 
    search_fields = ('name',)

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test])

Neste exemplo, nós procurar um nome para o w3cschool.cc (nome de domínio local), mostram os seguintes resultados:

Ferramentas Django admin Gestão Existem muitos recursos úteis, os estudantes interessados ​​podem estudar em profundidade o próximo.