informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Suka + Ikuti + Kumpulkan = Pelajari
Sudah dibicarakan di artikel sebelumnya Django
beroperasiMySQL
Metode ini menjelaskan cara membuat model dan cara menambah, menghapus, mengubah, dan menanyakan database. Tapi Anda harus menulis kode setiap kali Anda mengubah data, yang agak merepotkan.
Apakah ada cara yang lebih sederhana?
Beberapa beberapa,Django
Faktanya, ia hadir dengan backend, yaitu antarmuka grafis, dan Anda dapat dengan mudah mengoperasikan berbagai konten data di dalamnya.
Selanjutnya, mari kita bahas tentang cara menggunakan backend bawaan ini.
Sebenarnya menciptakan Django
Selama proyek berlangsung, kami telah mengonfigurasi alamat perutean di latar belakang untuk kami.
Jika Anda mengikuti artikel saya sebelumnya selangkah demi selangkah, perutean latar belakang mungkin terhapus. Tidak masalah, berbaikan saja.
Buka proyek urls.py
file, ditemukanurlpatterns
Variabel ini digunakan untuk mengisi background routing.
```ular piton
dari django.urls impor jalur dari blog.views impor blogIndex
urlpatterns = [ # Rute lain dihilangkan # Kalimat berikut adalah jalur perutean untuk mengonfigurasi latar belakang ('admin/', admin.site.urls) ] ```
Setelah konfigurasi selesai, mulai proyek dan buka di browser http://127.0.0.1:8000/admin/
Anda dapat melihat halaman login di latar belakang.
Jika ada halaman login, Anda harus memiliki akun yang sesuai untuk login.
Jadi kita perlu membuat akun manajemen super terlebih dahulu.
Buka terminal, masuk ke direktori proyek, dan masukkan perintah berikut untuk membuat akun manajemen super.
python manage.py createsuperuser
Kemudian terminal akan mengembalikan baris informasi ini kepada Anda, meminta Anda memasukkan nama pengguna manajemen super (akun)
Username (leave blank to use 'xxx'): admin
'xxx' ini nama komputer saya, Anda dapat memasukkan akun manajemen super setelah titik dua.Yang saya masukkan di sini adalahadmin
。
Setelah memasukkan nama pengguna Anda, ia akan terus meminta Anda memasukkan alamat email Anda.
Email address: 123@qq.com
Setelah memasukkan alamat email Anda, Anda akan diminta memasukkan kata sandi dua kali.
- Password:
- Password (again):
Kata sandi yang saya masukkan di sini adalah 12345678
, ini dengan cerdas mengingatkan saya pada kata sandi yang terlalu umum, tetapi saya mengetik y dan tetap menggunakan kata sandi sederhana tersebut.
- This password is too common.
- This password is entirely numeric.
- Bypass password validation and create user anyway? [y/N]: y
- Superuser created successfully.
Melihat Superuser created successfully.
Kalimat tersebut berarti akun telah berhasil dibuat.
Sekarang buka di browser http://127.0.0.1:8000/admin/
, masukan akun admin
, masukan kata sandi 12345678
Anda berhasil masuk.
Kami sebelumnya telah menggunakan kode untuk mengoperasikan database, yang tidak begitu nyaman.
Django
Menyediakan cara bagi kita untuk mengikat model aplikasi ke latar belakang, sehingga kita dapat langsung mengoperasikan data di antarmuka latar belakang.
Dibuat dari artikel sebelumnya account
Terapkan sebagai contoh.
ada account
ditemukan dalam aplikasiadmin.py
file, tulis kode berikut.
```ular piton
dari django.contrib impor admin dari akun.model impor Pengguna
class UserAdmin(admin.ModelAdmin): # Konten yang akan ditampilkan list_display = ['nama pengguna', 'email']
admin.site.register(Pengguna, UserAdmin) ```
Perlu diperkenalkan di sini dulu admin
DanUser
, karena kami ingin account
Model aplikasi dikaitkan dengan backend.
Buat file bernama UserAdmin
Kelas, tulislah di dalamnyalist_display = ['username', 'email']
, artinya ditampilkan di halaman latar belakangusername
Danemail
kedua bidang ini.
akhirnya admin.site.register(User, UserAdmin)
bermaksud untukUser
Model dan backend terikat bersama.
Jalankan proyek dan buka http://127.0.0.1:8000/admin/
Dan masuk, Anda dapat melihat model yang baru saja Anda ikat.
Klik "Tabel Pengguna s" untuk melihat informasi tentang tabel ini di database.
Anda dapat mengklik tombol "Tambah" untuk menambahkan data baru ke tabel ini.
Anda juga dapat mengubah dan menghapus data tertentu.
Data yang diubah pada halaman latar belakang akan berdampak langsung pada data di database.
Letakkan dengan cara yang sama blog
Model aplikasi dikaitkan dengan backend. Pengoperasiannya di sini sama seperti sebelumnya, jadi saya tidak akan menjelaskannya lagi.
```ular piton
dari django.contrib impor admin dari blog.models impor Artikel
class ArticleAdmin(admin.ModelAdmin): # Konten yang akan ditampilkan list_display = ['id', 'title']
admin.site.register(Artikel, AdminArtikel) ```
Mari buat artikel dan lihat.
Klik tombol Tambah di sebelah "Tabel Informasi Artikel" dan isi konten berikut.
Klik SAVE
Setelah menekan tombol, data ditulis ke database. Kembali ke halaman daftar "Tabel Informasi Artikel" untuk melihat data yang baru saja ditulis.
Jika Anda tidak yakin dengan konten keseluruhan proyek, Anda dapat melihat kembali apa yang saya kompilasi"Kolom Django"。
Pada operasi sebelumnya, pekerja yang penuh perhatian mungkin memperhatikan beberapa masalah, seperti mengapa antarmuka menggunakan bahasa Inggris? Mengapa ada huruf "s" di belakang nama tabel?Mengapa kolom Pengguna opsional saat membuat artikel bukan nama pengguna, melainkanUser object(1)
?
Selanjutnya kita akan menyelesaikan masalah tersebut satu per satu.
Buka proyek settings.py
file, ditemukanLANGUAGE_CODE
, tetapkan nilainya menjadi'zh-hans'
.dan kemudian temukanTIME_ZONE
atur keAsia/Shanghai
。
```ular piton
KODE_BAHASA = 'zh-hans'
ZONA_WAKTU = 'Asia/Shanghai' ```
Tapi saat ini ACCOUNT
DanBLOG
Masih dalam bahasa Inggris, nihDjango
Itu tidak bisa langsung diterjemahkan ke dalam bahasa Mandarin. Anda perlu mengkonfigurasi alias untuk kedua aplikasi ini.
Konfigurasinya ada di masing-masing aplikasi apps.py
mengajukan, melaluiverbose_name
Variabel untuk menyesuaikan nama kolom.
oleh account
Terapkan sebagai contoh.
```ular piton
dari django.apps impor AppConfig
kelas AccountConfig(AppConfig): defaultmobilfield = 'django.db.models.BigAutoField' name = 'akun' verbose_name = 'Manajemen Pengguna' ```
blog
Hal yang sama juga berlaku.
```ular piton
dari django.apps impor AppConfig
kelas BlogConfig(AppConfig): defaultmobilfield = 'django.db.models.BigAutoField' name = 'blog' verbose_name = 'Manajemen Artikel' ```
Saat ini, segarkan halaman dan Anda akan melihat bahwa nama kolom telah diubah.
Huruf "s" setelah nama tabel adalah Django
Itu disertakan. Untuk menghapus "s" ini, Anda juga perlu mengkonfigurasi alias tabel.
Di setiap file model aplikasi (models.py
) dikonfigurasikan di Meta
informatifverbose_name_plural
。
oleh account
Terapkan sebagai contoh.
```ular piton
dari django.db impor model
kelas Pengguna(model.Model): id = model.AutoField(utamakey=Benar) # nama pengguna = model.CharField('nama pengguna', makspanjang=30, null=Benar, kosong=Benar, unik=Benar) # Kata sandi kata sandi = models.CharField('kata sandi', max_length=30) # Email email = models.EmailField('Email', unik=Benar, null= Benar, kosong=Benar)
- class Meta:
- # 自定义表名
- db_table = 'user'
- # 表别名
- verbose_name = '用户表'
- verbose_name_plural = '用户表'
```
Refresh halaman dan Anda akan melihat bahwa "s" setelah "User Table" hilang.
blog
Alasan yang sama.
Saat kita menambahkan artikel, kita perlu memasukkan dan memilih penulis artikel tersebut. Penulis tabel artikel dikaitkan dengan tabel pengguna.
Saat menambahkan penulis, halaman tersebut langsung menampilkan nama "Objek pengguna". Jika jumlah pengguna bertambah, kami tidak akan bisa membedakan siapa itu siapa.
Kita harus menampilkan nama pengguna.
Mari kita modifikasi dulu blog
Bidang yang akan ditampilkan.
```ular piton
dari django.contrib impor admin dari blog.models impor Artikel
def get_author(obj): kembalikan obj.pengguna.namapengguna
class ArticleAdmin(admin.ModelAdmin): # Konten yang akan ditampilkan # Anda dapat menggunakan get here penulis diganti dengan nama pengguna. Tidak perlu menambahkan tanda kutip tunggal atau tanda kurung di sini. # Django menggunakan daftar Saat ditampilkan, parameter akan diteruskan ke metode secara default. daftartampilkan = ['id', dapatkanpenulis, 'judul', 'konten']
mendapatkanpenulis.pendekdeskripsi = 'Penulis'
admin.site.register(Artikel, AdminArtikel) ```
Kaitkan kunci asing dengan metode get_author username
Bidang ditampilkan.
Pada titik ini kita akan dapat melihat siapa penulis artikel ini. Namun kita tetap perlu menampilkan nama pengguna di halaman edit.
Perlu diubah saat ini User
Hanya model yang bisa melakukannya.
```ular piton
dari django.db impor model
kelas Pengguna(model.Model): id = model.AutoField(utamakey=Benar) # nama pengguna = model.CharField('nama pengguna', makspanjang=30, null=Benar, kosong=Benar, unik=Benar) # Kata sandi kata sandi = models.CharField('kata sandi', max_length=30) # Email email = models.EmailField('Email', unik=Benar, null= Benar, kosong=Benar)
- class Meta:
- # 自定义表名
- db_table = 'user'
- # 表别名
- verbose_name = '用户表'
- verbose_name_plural = '用户表'
-
- # 返回用户名
- def __str__(self):
- return self.username
```
ada account/models.py
Tambahkan di akhir__str__
metode, kembaliusername
。
Saat ini, nama pengguna dapat dilihat pada halaman pengeditan informasi artikel.
Di halaman pengelolaan artikel, jika Anda ingin mengedit artikel, Anda hanya dapat mengklik kolom "ID" untuk melompat ke halaman pengeditan.Jika Anda ingin melompat ke halaman edit dengan mengklik kolom lain, Anda perlu mengonfigurasinya secara manual.blog/admin.py
Misalnya, saya ingin mengklik "JUDUL" untuk melompat ke halaman pengeditan.
```ular piton
class ArticleAdmin(admin.ModelAdmin): # Daftar konten yang akan ditampilkantampilkan = ['id', dapatkanpenulis, 'judul', 'konten'] # daftar bidang yang dapat dilompatimenampilkanlink = ['id', 'title'] # Hilangkan beberapa kode```
saya disini ArticleAdmin
ditambahkanlist_display_links = ['id', 'title']
, menunjukkan klik id
Dantitle
Anda dapat melompat ke halaman edit.
Saat mengedit konten, kami tidak ingin beberapa bidang dapat dimodifikasi. Misal ID blog tidak bisa diubah.
diperbolehkan blog/admin.py
Menambahkanreadonly_fields
Menentukan bidang yang tidak dapat diubah.
```ular piton
class ArticleAdmin(admin.ModelAdmin): # Atribut read-only readonly_fields = ['id'] # Hilangkan beberapa kode````
Saat mengedit saat ini, nilai kolom id tidak dapat diubah.
Itu saja untuk artikel ini. Pada artikel selanjutnya, saya akan memperkenalkan cara memuat informasi dalam database di halaman depan.
Suka + Ikuti + Kumpulkan = Pelajari