Alat pengurusan Pentadbiran Django


Django menyediakan alatan pengurusan berasaskan web.

Alat pengurusan automatik Django ialah sebahagian daripada django.contrib. Anda boleh melihatnya dalam INSTALLED_APPS dalam tetapan projek.py:

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

django.contrib ialah set ciri besar yang merupakan sebahagian daripada pangkalan kod Django.


Alat pengurusan pengaktifan

Biasanya kami akan menetapkannya secara automatik dalam urls.py apabila kami menjana projek, kami hanya perlu mengalih keluar ulasan.

Item konfigurasi adalah seperti berikut:

from django.contrib import admin
admin.autodiscover()

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

Apabila semua ini dikonfigurasikan, alat pengurusan Django boleh dijalankan.


Gunakan alat pengurusan

untuk memulakan pelayan pembangunan, dan kemudian lawati: http://yoursite:8000/admin/ dalam penyemak imbas, dan dapatkan antara muka berikut:

1029.png

Anda boleh mencipta pengguna super melalui arahan python manage.py createsuperuser, seperti yang ditunjukkan di bawah:


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

Kemudian masukkan nama pengguna dan kata laluan untuk log masuk, Antara muka adalah seperti berikut:

admin2.jpg

Untuk antara muka pentadbir menguruskan model data tertentu, kita perlu mendaftarkan model data kepada pentadbir terlebih dahulu. Sebagai contoh, sebelum ini kami telah mencipta model Test dalam TestModel. Ubah suai TestModel/admin.py:

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

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

Selepas memuat semula, anda boleh melihat jadual data Testmodel:

admin3.jpg

Model kompleks

Halaman pengurusan mempunyai kuasa Berfungsi sepenuhnya untuk mengendalikan model data yang lebih kompleks.

Mula-mula tambahkan model data yang lebih kompleks pada TestModel/models.py:

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

Terdapat dua jadual di sini. Tag menggunakan Kenalan sebagai kunci luaran. Satu Kenalan boleh sepadan dengan berbilang Tag.

Kita juga boleh melihat banyak jenis atribut yang belum pernah kita lihat sebelum ini, seperti IntegerField untuk menyimpan integer.

admin4.png

Daftar berbilang model dalam TestModel/admin.py dan paparan:

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

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

Muat semula halaman pengurusan, hasilnya dipaparkan seperti berikut:

admin5.jpg

Dalam alat pengurusan di atas Kita boleh melakukan operasi model yang kompleks.


Borang tersuai

Kami boleh menyesuaikan halaman pengurusan untuk menggantikan halaman lalai. Contohnya, halaman "tambah" di atas. Kami mahu memaparkan hanya bahagian nama dan e-mel. Ubah suai 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])

Kod di atas mentakrifkan kelas ContactAdmin untuk menerangkan format paparan halaman pengurusan. Atribut medan di dalam

mentakrifkan medan untuk dipaparkan.

Memandangkan kelas ini sepadan dengan model data Kenalan, kami perlu mendaftarkannya bersama semasa mendaftar. Kesan paparan adalah seperti berikut:

admin6.jpg

Kami juga boleh membahagikan medan input kepada blok, dan setiap medan juga boleh menentukan formatnya sendiri. Ubah suai TestModel/admin.py kepada:

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])

Lajur di atas dibahagikan kepada dua bahagian: Utama dan Advance. kelas menerangkan format CSS bahagian di mana ia muncul. Biarkan bahagian Advance disembunyikan di sini:

admin7.jpg

Terdapat butang Tunjukkan di sebelah bahagian Advance untuk pengembangan Selepas pengembangan, anda boleh mengklik Sembunyikan untuk menyembunyikannya, seperti yang ditunjukkan dalam rajah di bawah:

admin8.jpg

Paparan sebaris

Kenalan di atas ialah kunci luaran Tag, jadi terdapat hubungan rujukan luaran.

Dalam paparan halaman lalai, kedua-duanya dipisahkan dan hubungan bawahan antara keduanya tidak dapat dilihat. Kami boleh menggunakan paparan sebaris untuk melampirkan Teg pada halaman edit Kenalan.

Ubah suai 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])

Kesan paparan adalah seperti berikut:

admin9.jpg

Paparan halaman senarai

Masukkan nombor dalam Kenalan Selepas rakaman, halaman senarai Kenalan kelihatan seperti berikut:

admin10.jpg

Kami juga boleh menyesuaikan paparan halaman ini, seperti memaparkan lebih banyak lajur dalam senarai, cuma tambah atribut list_display dalam ContactAdmin :

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])

Menyegarkan halaman memaparkan kesan seperti berikut:

admin11.jpg

Fungsi carian sangat berguna apabila menguruskan sejumlah besar rekod Kami boleh menggunakan medan carian untuk menambah bar carian halaman senarai:

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])

Dalam contoh ini, kami mencari rekod dengan nama w3cschool.cc (nama domain tapak web ini), dan hasilnya adalah seperti berikut:

admin12.jpg

Django Alat pengurusan pentadbir juga mempunyai banyak fungsi praktikal, pelajar yang berminat Anda boleh mempelajarinya secara mendalam.