Kerangka pemeriksaan sistem¶
Kerangka sistem pemeriksaan adalah kumpulan dari pemeriksaan tetap untuk memeriksa kebenaran proyek Django. Dia menemukan masalah umum dan menyediakan petunjuk untuk bagaimana memperbaiki mereka. Kerangka ini dapat diperpanjang sehingga anda dapat dengan mudah menambahkan pemeriksaan anda sendiri.
Untuk rincian bagaimana anda menambahkan pemeriksaan sendiri dan menyatukan mereka ke dalam pemeriksaan sistem Django, lihat System check topic guide.
Acuan API¶
CheckMessage
¶
Peringatan dan kesalahan dimunculkan oleh sistem pemeriksaan harus contoh dari CheckMessage
. Sebuah instance merangkum kesalahan atau peringatan dapat dilaporkan tunggal. Dia juga menyediakan konteks dan petunjuk yang berlaku pada pesan, dan penciri unik yang digunakan untuk tujuan penyaringan.
Argumen pembangun adalah:
level
- Kesederhanaan dari pesan. Gunakan satu dari nilai-nilai yang sudah ditentukan:
DEBUG
,INFO
,WARNING
,ERROR
,CRITICAL
. Jika tingkatan lebih hebat atau sama denganERROR
, kemudian Django akan mencegah perintah pengelolaan dari menjalankan. Pesan-pesan dengan tingkatan lebih rendah dariERROR
(yaitu peringatan) dilaporkan ke konsol, tetapi dapat disenyapkan. msg
- Deretan kalimat (kurang dari 80 karakter) pendek menggambarkan masalah. Deretan kalimat seharusnya tidak mengandung baris baru.
hint
- Deretan karakter baris-tunggal menyediakan petunjuk untuk memperbaiki masalah. Jika tidak ada petunjuk disediakan, atau petunjuk adalah terbukti-sendiri dari pesan kesalahan, petunjuk dapat diabaikan, atau nilai dari
None
dapat digunakan. obj
- Pilihan. Sebuah obyek menyediakan konteks untuk pesan (sebagai contoh, model dimana masalah ditemukan). Obyek harus berupa sebuah model, bidang, atau pengelola atau obyek lain yang menentukan sebuah metode
__str__()
. Metode ini digunakan selagi melaporkan semua pesan dan hasilnya mendahului pesan. id
- Deretan karakter pilihan. Sebuah penciri unik untuk masalah. Penciri harus mengikuti pola
applabel.X001
, dimanaX
adalah satu dari hurufCEWID
, menunjukkan kesederhanaan pesan (C
for kritis,E
untuk kesalahan dan sebagainya). Angka dapat dialokasikan dengan aplikasi, tetapi harus unik dalam aplikasi itu.
Ada subkelas-subkelas untuk membuat pesan dengan tingkatan umum lebih mudah. Ketika menggunakan mereka anda dapat megnabaikan argumen level
karena dia disisipkan oleh nama kelas.
Etiket siap pakai¶
Sistem pemeriksaan Django diorganisasikan menggunakan etiket berikut:
admin
: Memeriksa pernyataan situs admin apapun.caches
: Memeriksa penyimpanan konfigurasi terkait.compatibility
: Masalah potensial tanda dengan versi ditingkatkan.database
: Memeriksa masalah-masalah konfigurasi terkait-basisdata. Pemeriksaan basisdata tidak berjalan secara awal karena mereka melakukan lebih dar analisa kode tetap seperti pemeriksaan biasa lakukan. Mereka hanya berjalan oleh perintahmigrate
atau jika anda menentukan etiketdatabase
ketika memanggil perintahcheck
.models
: Memeriksa bidang model, bidang, dan pengertian pengelolaan.security
: Memeriksa keamanan konfigurasi terkait.signals
: Memeriksa pada pernyataan sinyal dan penangan pendaftaran.staticfiles
: Memeriksa konfigurasidjango.contrib.staticfiles
.templates
: Memeriksa cetakan konfigurasi terkait.urls
: Memeriksa konfigurasi URL.
Beberapa pemeriksaan mungkin didaftarkan dengan banyak etiket.
Memeriksa sistem inti¶
Kesesuaian kebelakang¶
Peringatan pemeriksaan kesesuaian dari kemungkinan masalah-masalah yang akan muncul setelah meningkatkan Django.
Tembolok¶
Pemeriksaan berikut memeriksa bahwa pengaturan CACHES
anda dengan benar dikonfigurasi:
- caches.E001: Anda harus menentukan sebuah penyimpanan
'default'
di pengaturanCACHES
.
Basisdata¶
MySQL¶
Jika anda sedang menggunakan MySQL, pemeriksaan berikut akan dilakukan:
- mysql.E001: MySQL tidak mengizinkan
CharField
s unik mempunyaimax_length
> 255. - mysql.W002: MySQL Strict Mode tidak disetel untuk hubungan basisdata '<alias>'. Lihat juga Mengatur sql_mode.
Bidang-bidang model¶
- fields.E001: Nama bidang tidak boleh berakhir dengan garis bawah.
- fields.E002: Nama bidang tidak harus mengandung
"__"
. - fields.E003:
pk
adalah kata terpesan yang tidak dapat digunakan sebagai nama bidang. - fields.E004:
choices
harus dapat berulang (sebagai contoh, daftar atau tuple). - fields.E005:
choices
harus dapat berulang mengembalikan tuple(nilai sebenarnya, nama yang dapat dibaca manusia)
. - fields.E006:
db_index
harus berupaNone
,True
atauFalse
. - fields.E007: Primary key tidak harus mempunyai
null=True
. - fields.E008: Semua
validators
harus dapat dipanggil. - fields.E100: ``AutoField harus disetel primary_key=True.
- fields.E110:
BooleanField
tidak menerima nilai-nilai null. - fields.E120:
CharField
harus menentukan atributmax_length
. - fields.E121:
max_length
harus integer positif. - fields.W122:
max_length
diabaikan ketika digunakan denganIntegerField
. - fields.E130:
DecimalField
harus ditentukan atributdecimal_places
. - fields.E131:
decimal_places
harus berupa integer bukan-negatif. - fields.E132:
DecimalField
harus ditentukan atributmax_digits
. - fields.E133:
max_digits
harus berupa integer bukan-negatif. - fields.E134:
max_digits
harus lebih besar atau sama dengandecimal_places
. - fields.E140:
FilePathField
harus mempunyai salah satuallow_files
atauallow_folders
disetel ke True. - fields.E150:
GenericIPAddressField
tidak dapat menerima nilai-nilai kosong jika nilai-nilai null tidak diijinkan, sebagai nilai-nilai kosong disimpan sebagai null. - fields.E160: Pilihan
auto_now
,auto_now_add
, dandefault
saling eksklusif. Hanya satu dari pilihan-pilihan ini mungkin dihadirkan. - fields.W161: Nilai awal tetap disediakan.
- fields.W162: ```` tidak mendukung indeks basisdata di kolom ````.
- fields.E900:
IPAddressField
telah dipindahkan kecuali untuk dukungan dalam riwayat perpindahan. - fields.W900*:
IPAddressField
telah diusangkan. Dukung untuk dia (kecuali dalam riwayat perpindahan) akan dipindahkan di Django 1.9. Pemeriksaan ini muncul di Django 1.7 and 1.8. - fields.W901:
CommaSeparatedIntegerField
telah diusangkan. mendukung untk itu (kecuali dalam riwayat perpindahan) akan dipindahkan di Django 2.0. Pemeriksaan ini muncul dalam Django 1.10 dan 1.11. - fields.E901:
CommaSeparatedIntegerField
dipindahkan untuk dukungan dalam riwayat perpindahan.
Bidang-bidang berkas¶
- fields.E200:
unique
bukan argumen sah untukFileField
. Pemeriksaan ini dipindahkan dalam Django 1.11. - fields.E201:
primary_key
bukan argumen sah untukFileField
. - fields.E202: Argumen
upload_to
``FileField``harus berupa jalur bergantung, bukan jalur mutlak. - fields.E210: Tidak dapat menggunakan
ImageField
karena Pillow tidak dipasang.
Model¶
- models.E001:
<swappable>
bukan dari formulirapp_label.app_name
. - models.E002:
<SETTING>
acuan<model>
, yang belum dipasang, atau abstrak. - models.E003: Model mempunyai hubungan many-to-many melalui model menengah
<app_label>.<model>
. - models.E004:
id
dapat hanya digunakan sebagai nama bidang jika bidang juga disetelprimary_key=True
. - models.E005: Bidang
<field name>
dari model induk<model>
bentrok dengan bidang<field name>
dari model induk<model>
. - models.E006: Bidang bentrok dengan bidang
<field name>
dari model<model>
. - models.E007: Field
<field name>
mempunyai nama kolom<column name>
yang digunakan oleh bidang lain. - models.E008:
index_together
harus berupa daftar atau tuple. - models.E009: Semua unsur
index_together
harus berupa daftar atau tuple. - models.E010:
unique_together
harus berupa daftar atau tuple. - models.E011: Semua unsur
unique_together
harus berupa daftar atau tuple. - models.E012:
index_together/unique_together
mengacu pada bidang yang tidak ada ````. - models.E013:
index_together/unique_together
mengacu padaManyToManyField
<field name>
, tetapiManyToManyField
tidak didukung untuk pilihan itu. - models.E014:
ordering
harus berupa tuple atau daftar (bahkan jika anda ingin memesan hanya satu bidang). - models.E015:
ordering
mengacu pada bidang yang tidak ada ````. - models.E016:
index_together/unique_together
mengacu pada bidang<field_name>
yang bukan lokal ke model<model>
. - models.E017: Model proxy
<model>
mengandung bidang-bidang model. - models.E018: Nama kolom otomatis dibangkitkan terlalu panjang untuk bidang
<field>
. Panjang maksimum adalah<maximum length>
untuk basisdata<alias>
. - models.E019: Nama kolom otomatis dibangkitkan terlalu panjang untuk bidang M2M
<M2M field>
. Panjang maksimum adalah<maximum length>
untuk basisdata<alias>
. - models.E020: Cara kelas
<model>.check()
saat ini dikesampingkan. - models.E021:
ordering
danorder_with_respect_to
tidak dapat digunakan bersama-sama. - models.E022:
<function>
mengandung acuan lazy pada<app label>.<model>
, tetapi aplikasi<app label>
tidak dipasang atau tidak menyediakan model<model>
. - models.E023: Nama model
1
tidak dapat mulai atau berakhir dengan sebuah garis bawah ketika itu bertabrakan dengan sintaksis penacrian permintaan. - models.E024: Nama model
1
tidak dapat mengandung garis bawah ganda ketika itu bertabrakan dengan sintaksis pencarian permintaan.
Keamanan¶
Pemeriksaan keamanan tidak membuat situs anda aman. Mereka tidak memeriksa kode, melalui pengenalan gangguan, atau melakukan apapun khususnya yang rumit. Tentu saja, mereka membantu melakukan sebuah otomatis, daftar centang yang mudah dijangkau. Mereka membantu anda mengingat hal-hal sederhana yang meningkatkan keamanan situs anda.
Beberapa pemeriksaan ini mungkin tidak sesuai untuk konfigurasi penyebaran tertentu anda. Sebagai contoh, jika anda melakukan pengalihan HTTP ke HTTPS anda dalam sebuah penyeimbang beban, itu akan menjengkelkan terus-menerus diperingati mengenai tidak memiliki SECURE_SSL_REDIRECT
diadakan. Gunakan SILENCED_SYSTEM_CHECKS
untuk mendiamkan pemeriksaan yang tidak dibutuhkan
Pemeriksaan berikut berjalan jika anda menggunakan pilihan check --deploy
:
- security.W001: Anda tidak mempunyai
django.middleware.security.SecurityMiddleware
dalamMIDDLEWARE
anda sehingga pengaturanSECURE_HSTS_SECONDS
,SECURE_CONTENT_TYPE_NOSNIFF
,SECURE_BROWSER_XSS_FILTER
, danSECURE_SSL_REDIRECT
tidak mempunyai pengaruh. - security.W002: Anda tidak mempunyai
django.middleware.clickjacking.XFrameOptionsMiddleware
dalamMIDDLEWARE
, sehingga halaman anda tidak akan dilayani dalam sebuah kepala'x-frame-options'
. Meskipun ada alasan bagus untuk situs anda dilayani di sebuah kerangka, anda harus mempertimbangkan mengadakan kepala ini untuk membantu mencegah serangan clickjacking. - security.W003: You don't appear to be using Django's built-in cross-site
request forgery protection via the middleware
(
django.middleware.csrf.CsrfViewMiddleware
is not in yourMIDDLEWARE
). Enabling the middleware is the safest approach to ensure you don't leave any holes. - security.W004: Anda belum menyetel sebuah nilai untuk pengaturan
SECURE_HSTS_SECONDS
. Jika keseluruhan situs anda hanya terhadap SSL, anda mungkin ingin mempertimbangkan pengaturan sebuah nilai dan mengadakan HTTP Strict Transport Security. Pastikan membaca dokumentasi dahulu; mengadakan HSTS tanpa bertanggung jawab dapat menyebabkan serius, masalah tidak dapat diubah. - security.W005: Anda belum menyetel pengaturan
SECURE_HSTS_INCLUDE_SUBDOMAINS
menjadiTrue
. Tanpa ini, situs anda berpotensi rentan pada serangan melalui hubungan tidak aman ke subranah. Hanya setel ini menjadiTrue
jika anda yakin bajwa semua subranah dari ranah anda harus dilayani secara khusus melalui SSL. - security.W006: Pengaturan
SECURE_CONTENT_TYPE_NOSNIFF
anda tidak disetel menjadiTrue
, jadi halaman anda tidak akan dilayani dengan kepala'x-content-type-options: nosniff'
. Anda harus mempertimbangkan mengadakan kepala ini untuk mencegah peramban dari menciri jenis isi secara tidak benar. - security.W007: Pengaturan
SECURE_BROWSER_XSS_FILTER
anda disetel menjadiTrue
, jadi halaman anda tidak akan dilayani dengan kepala'x-xss-protection: 1; mode=block'
. Anda harus mempertimbangkan mengadakan kepala ini untuk mengaktifkan penyaringan XSS peramban dan membantu mencegah serangan XSS. - security.W008: Pengaturan
SECURE_SSL_REDIRECT
anda tidak disetel menjadiTrue
. Meskipun situs anda harus tersedia terhadap kedua hubungan SSL dan bukan-SSL, anda mungkin ingin antara menyetel pengaturan ini menjadiTrue
atau konfigurasi sebuah penyeimbang muatan atau peladen membalikkan-proxy ke mengalihkan semua hubungan pada HTTPS. - security.W009:
SECRET_KEY
anda mempunyai kurang dari 50 karakter atau kurang dari 5 karakter unik. Harap bangkitkan sebuahSECRET_KEY
panjang dan acak, jika tidak banyak dari fitur-fitur kritis-keamanan Django akan rentan pada serangan. - security.W010: Anda memiliki
django.contrib.sessions
diINSTALLED_APPS
anda tetapi anda belum menyetelSESSION_COOKIE_SECURE
menjadiTrue
. Menggunakan kue sesi hanya-aman membuatnya lebih sulit untuk lalu lintas jaringan sapu tangan untuk membajak sesi pengguna. - security.W011: You have
django.contrib.sessions.middleware.SessionMiddleware
in yourMIDDLEWARE
, but you have not setSESSION_COOKIE_SECURE
toTrue
. Using a secure-only session cookie makes it more difficult for network traffic sniffers to hijack user sessions. - security.W012:
SESSION_COOKIE_SECURE
tidak disetel menjadiTrue
. Menggunakan kue sesi hanya-aman membuatnya lebih sulit untuk lalu lintas jaringan sapu tangan untuk membajak sesi pengguna. - security.W013: Anda memiliki
django.contrib.sessions
diINSTALLED_APPS
anda, tetapi anda belum menyetelSESSION_COOKIE_HTTPONLY
menjadiTrue
. Menggunakan kue sesiHttpOnly
membuatnya lebih sulit untuk serangan penulisan lintas-situs untuk membajak sesi pengguna. - security.W014: You have
django.contrib.sessions.middleware.SessionMiddleware
in yourMIDDLEWARE
, but you have not setSESSION_COOKIE_HTTPONLY
toTrue
. Using anHttpOnly
session cookie makes it more difficult for cross-site scripting attacks to hijack user sessions. - security.W015:
SESSION_COOKIE_HTTPONLY
tidak disetel menjadiTrue
. Menggunakan kue sesiHttpOnly
membuatnya lebih sulit untuk serangan penulisan lintas-situs untuk membajak sesi pengguna. - security.W016:
CSRF_COOKIE_SECURE
tidak disetel menjadiTrue
. Menggunakan kue CSRF hanya-aman membuatnya lebih sulit untuk lalu lintas jaringan sapu tangan untuk mencuri token CSRF. - security.W017:
CSRF_COOKIE_HTTPONLY
tidak disetel menjadiTrue
. Menggunakan sebuah kue CSRFHttpOnly
membuatnya lebih sulit untuk serangan cross-site scripting untuk mencuri token CSRF Pemeriksaan ini dipindahkan dalam Django 1.11 ketika pengaturanCSRF_COOKIE_HTTPONLY
* tidak menawarkan keuntungan berguna.* - security.W018*: Anda harus mempunyai
DEBUG
disetel keTrue
dalam menyebarkan. - security.W019: You have
django.middleware.clickjacking.XFrameOptionsMiddleware
in yourMIDDLEWARE
, butX_FRAME_OPTIONS
is not set to'DENY'
. The default is'SAMEORIGIN'
, but unless there is a good reason for your site to serve other parts of itself in a frame, you should change it to'DENY'
. - security.W020:
ALLOWED_HOSTS
harus tidak kosong dalam menyebarkan. - security.W021: Anda belum menyetel pengaturan
SECURE_HSTS_PRELOAD
menjadiTrue
. Tanpa ini, situs anda tidak dapat diajukan ke daftar pramuat peramban.
Sinyal¶
- signals.E001:
<handler>
telah terhubung ke sinyal<signal>
dengan acuan lazy ke pengirim<app label>.<model>
, tetapi aplikasi<app label>
tidak terpasang atau tidak menyediakan model<model>
.
URL¶
Pemeriksaan berikut dilakukan di konfigurasi URL anda:
- urls.W001: Your URL pattern
<pattern>
usesinclude()
with aroute
ending with a$
. Remove the dollar from theroute
to avoid problems including URLs. - urls.W002: Pola URL anda
<pattern>
mempunyairoute
dimulai dengan sebuah/
. Pindahkan garis miring ini ketika itu tidak dibutuhkan. Jika pola ini disasarkan dalam sebuahinclude()
, pastikan polainclude()
mempunyai buntutan/
. - urls.W003: Corak
<pattern>
URL mempunyainame
termasuk sebuah:
. Pindahkan titik dua, untuk menghindari dua arti acuan namespace. - urls.E004: Pola URL anda
<pattern>
tidak sah. Pastikan bahwaurlpatterns
adalah daftar daripath()
dan/atau contohre_path()
. - urls.W005: namespace URL
1
tidak unik. Anda mungkin tidak dapat membalikkan semua URL dalam namespace ini. - urls.E006: pengaturan
MEDIA_URL
/STATIC_URL
harus berakhir dengan sebuah garis miring.
Pemeriksaan aplikasi contrib
¶
admin
¶
Admin memeriksa semua yang dilakukan sebagai bagian dari etiket admin
.
Pemeriksaan berikut dilakukan pada setiap ModelAdmin
(atau subkelas) yang terdaftar dengan situs admin:
- admin.E001: Nilai dari
raw_id_fields
harus berupa daftar atau tuple. - admin.E002: Nilai dari
raw_id_fields[n]
mengacu pada<field name>
, yang bukan sebuah atribut dari<model>
. - admin.E003: Nilai dari
raw_id_fields[n]
harus foreign key atau bidang many-to-many. - admin.E004: Nilai-nilai dari
fields
harus berupa daftar atau tuple. - admin.E005: kedua
fieldsets
danfields
ditentukan. - admin.E006: Nilai dari
fields
mengandung bidang ganda. - admin.E007: Nilai dari
fieldsets
harus berupa daftar atau tuple. - admin.E008: Nilai dari
fieldsets[n]
harus berupa daftar atau tuple. - admin.E009: Nilai dari
fieldsets[n]
harus panjang 2. - admin.E010: Nilai dari
fieldsets[n][1]
harus berupa kamus. - admin.E011: Nilai dari
fieldsets[n][1]
harus mengandung kuncifields
. - admin.E012: Ada bidang ganda dalam
fieldsets[n][1]
. - admin.E013:
fields[n]/fieldsets[n][m]
tidak dapat menyertakan<field name>
ManyToManyField
, karena bidang itu secara manual menentukan sebuah hubungan model. - admin.E014: Nilai dari
exclude
harus berupa daftar atau tuple. - admin.E015: Nilai dari
exclude
mengandung bidang ganda. - admin.E016: Nilai dari
form
harus warisan dariBaseModelForm
. - admin.E017: Nilai dari
filter_vertical
harus berupa daftar atau tuple. - admin.E018: Nilai-nilai dari
filter_horizontal
harus berupa daftar atau tuple. - admin.E019: Nilai dari
filter_vertical[n]/filter_vertical[n]
mengacu pada<field name>
, yang bukan sebuah atribut dari<model>
. - admin.E020: Nilai dari
filter_vertical[n]/filter_vertical[n]
harus berupa bidang many-to-many. - admin.E021: Nilai dari
radio_fields
harus berupa kamus. - admin.E022: Nilai dari
radio_fields
mengacu pada<field name>
, yang bukan sebuah atribut dari<model>
. - admin.E023: Nilai dari
radio_fields
mengacu pada<field name>
, yang bukanForeignKey
, dan tidak mempunyai pengertianchoices
. - admin.E024: Nilai dari
radio_fields[<field name>]
harus berupaadmin.HORIZONTAL
atauadmin.VERTICAL
. - admin.E025: Nilai dari
view_on_site
harus berupa callable atau nilai boolean. - admin.E026: Nilai dari
prepopulated_fields
harus berupa kamus. - admin.E027: Nilai dari
prepopulated_fields
mengacu pada<field name>
, yang bukan sebuah atribut dari<model>
. - admin.E028: Nilai dari
prepopulated_fields
mengacu pada<field name>
, yang harus tidak berupa sebuah bidangDateTimeField
,ForeignKey
,OneToOneField
, atauManyToManyField
. - admin.E029: Nilai dari
prepopulated_fields[<field name>]
harus berupa daftar atau tuple. - admin.E030: Nilai dari
prepopulated_fields
mengacu pada<field name>
, yang bukan sebuah atribut dari<model>
. - admin.E031: Nilai dari
ordering
harus berupa daftar atau tuple. - admin.E032: Nilai dari
ordering
mempunyai pembuat urutan acak?
, tetapi mengandung bidang lain juga. - admin.E033: Nilai dari
ordering
mengacu pada<field name>
, yang bukan sebuah atribut dari<model>
. - admin.E034: Nilai dari
readonly_fields
harus berupa sebuah daftar atau tuple. - admin.E035: Nilai dari
readonly_fields[n]
adalah tidak callable, sebuah atribut dari<ModelAdmin class>
, atau sebuah atribut dari<model>
. - admin.E036: Nilai dari
autocomplete_fields
harus berupa list atau tuple. - admin.E037: Nilai dari
autocomplete_fields[n]
mengacu pada<field name>
, yang bukan sebauh atribut dari<model>
. - admin.E038: Nilai dari
autocomplete_fields[n]
harus berupa sebuah foreign key atau bidang many-to-many. - admin.E039: Sebuah admin untuk model
<model>
harus didaftarkan untuk diacukan oleh<modeladmin>.autocomplete_fields
. - admin.E040:
<modeladmin>
harus menentukansearch_fields
, karena itu diacukan oleh``<other_modeladmin>.autocomplete_fields``.
ModelAdmin
¶
Pemeriksaan berikut dilakukan di setiap ModelAdmin
yang terdaftar dengan situs admin:
- admin.E101: Nilai dari
save_as
harus boolean. - admin.E102: Nilai dari
save_on_top
harus boolean. - admin.E103: Nilai dari
inlines
harus berupa sebuahd daftar atau tuple. - admin.E104:
<InlineModelAdmin class>
harus mewarisi dariInlineModelAdmin
. - admin.E105:
<InlineModelAdmin class>
harus mempunyai atributmodel
. - admin.E106: Nilai dari
<InlineModelAdmin class>.model
harus berupaModel
. - admin.E107: Nilai dari
list_display
harus berupa daftar atau tuple. - admin.E108: Nilai dari
list_display[n]
merujuk pada``<label>``, yang merupakan bukan callable, sebuah atribut dari<ModelAdmin class>
, atau sebuah atribut atau metode di<model>
. - admin.E109: Nilai dari
list_display[n]
harus tidak berupa bidangManyToManyField
. - admin.E110: Nilai dari
list_display_links
harus berupa daftar, tuple atauNone
. - admin.E111: Nilai dari
list_display_links[n]
mengacu pada<label>
, yang tidak ditentukan dilist_display
. - admin.E112: Nilai dari
list_filter
harus berupa daftar atau tuple. - admin.E113: Nilai dari
list_filter[n]
harus warisan dariListFilter
. - admin.E114: Nilai dari
list_filter[n]
harus bukan warisan dariFieldListFilter
. - admin.E115: Nilai dari
list_filter[n][1]
harus warisan dariFieldListFilter
. - admin.E116: Nilai dari
list_filter[n]
mengacu pada<label>
, yang bukan mengacu pada sebuah Bidang. - admin.E117: Nilai dari
list_select_related
harus berupa boolean, tuple atau daftar. - admin.E118: Nilai dari
list_per_page
harus berupa integer. - admin.E119: Nilai dari
list_max_show_all
harus berupa integer. - admin.E120: Nilai dari
list_editable
harus berupa sebuah daftar atau tuple. - admin.E121: Nilai dari
list_editable[n]
mengacu pada<field label>
, yang bukan sebuah atribut dari<model>
. - admin.E122: Nilai dari
list_editable[n]
mengacu pada<label>
, yang tidak berisi dilist_display
. - admin.E123: Nilai dari
list_editable[n]
tidak dapat di kedualist_editable
danlist_display_links
. - admin.E124: Nilai dari
list_editable[n]
mengacu pada bidang pertama dilist_display
(<label>
), yang tidak dapat digunakan meskipunlist_display_links
disetel. - admin.E125: Nilai dari
list_editable[n]
mengacu pada<field name>
, yang tidak dapat disunting melalui admin. - admin.E126: Nilai dari
search_fields
harus berupa sebuah daftar atau tuple. - admin.E127: Nilai dari
date_hierarchy
mengacu pada<field name>
, yang tidak mengacu ke sebuah Bidang. - admin.E128: Nilai dari
date_hierarchy
harus berupaDateField
atauDateTimeField
.
InlineModelAdmin
¶
Pemeriksaan berikut dilakukan pada setiap InlineModelAdmin
yang didaftarkan sebagai sebaris pada ModelAdmin
.
- admin.E201: Tidak dapat mengeluarkan bidang
<field name>
, karena itu adalah foreign key pada model induk<app_label>.<model>
. - admin.E202:
<model>
tidak mempunyaiForeignKey
pada<parent model>
./<model>
mempunyai lebih dari satuForeignKey
pada<parent model>
. - admin.E203: Nilai dari
extra
harus berupa integer. - admin.E204: Nilai
max_num
harus berupa integer. - admin.E205: Nilai
min_num
harus berupa integer. - admin.E206: Nilai dari
formset
harus warisan dariBaseModelFormSet
.
GenericInlineModelAdmin
¶
Pemeriksaan berikut dilakukan pada setiap GenericInlineModelAdmin
yang didaftarkan sebagai berderet pada ModelAdmin
.
- admin.E301:
'ct_field'
acuan<label>
, yang bukan bidang di<model>
. - admin.E302:
'ct_fk_field'
acuan<label>
, yang bukan bidang pada<model>
. - admin.E303:
<model>
tidak mempunyaiGenericForeignKey
. - admin.E304:
<model>
tidak mempunyaiGenericForeignKey
menggunakan<field name>
bidang jenis isi dan<field name>
bidang ID obyek.
AdminSite
¶
Pemeriksaan berikut dilakukan pada awalan AdminSite
:
- admin.E401:
django.contrib.contenttypes
harus diINSTALLED_APPS
untuk menggunakan aplikasi admin. - admin.E402:
django.contrib.auth.context_processors.auth
harus diTEMPLATES
untuk menggunakan aplikasi admin.
auth
¶
- auth.E001:
REQUIRED_FIELDS
harus berupa daftar atau rekaman. - auth.E002: Bidang bernama sebagai
USERNAME_FIELD
untuk model pengguna penyesuaian harus tidak disertakan diREQUIRED_FIELDS
. - auth.E003:
<field>
harus unik karena itu dinamai sebagaiUSERNAME_FIELD
. - auth.W004:
<field>
dinamai sebagaiUSERNAME_FIELD
, tetapi itu tidak unik. - auth.E005: Nama kode perizinan
<codename>
bentrok dengan perizinan siap pakai untuk model<model>
. - auth.E006: Nama kode perizinan
<codename>
digunakan untuk model<model>
. - auth.E007:
verbose_name
dari model<model>
harus berupa paling banyak 244 karakter untuk nama-nama perizinan siap pakainya menjadi paling banyak 255 karakter. - auth.E008: Perizinan bernama
<name>
dari model<model>
tidak lebih panjang dari 255 karakter. - auth.C009:
<User model>.is_anonymous
harus berupa sebuah atribut atau sifat daripada sebuah metode. Mengabaikan ini adalah masalah keamanan ketika pengguna anonim akan diperlakukan sebagai terotentifikasi! - auth.C010:
<User model>.is_authenticated
harus berupa sebuah atribut atau sifat daripada sebuah metode. Mengabaikan ini adalah masalah keamanan ketika pengguna anonim akan diperlakukan sebagai terotentifikasi!
contenttypes
¶
Pemeriksaan berikut dilakukan ketika sebuah model mengandung sebuah GenericForeignKey
atau GenericRelation
:
- contenttypes.E001: ID obyek
GenericForeignKey
mengacu bidang tidak ada<field>
. - contenttypes.E002: Jenis isi
GenericForeignKey
mengacu field<field>
yang tidak ada. - contenttypes.E003:
<field>
bukanForeignKey
. - contenttypes.E004:
<field>
bukanForeignKey
padacontenttypes.ContentType
. - contenttypes.E005: Nama-nama model harus paling banyak 100 karakter.
sites
¶
Pemeriksaan berikut dilakukan pada setiap model menggunakan CurrentSiteManager
:
- sites.E001:
CurrentSiteManager
tidak dapat menemukan sebuah bidang dinamai<field name>
. - sites.E002:
CurrentSiteManager
tidak dapat menggunakan<field>
karena itu adalah bukan foreign key atau bidang many-to-many.
staticfiles
¶
Pemeriksaan berikut mensahkan bahwa django.contrib.staticfiles
dikonfigurasi dengan benar.
- staticfiles.E001: Pengaturan
STATICFILES_DIRS
bukan tuple atau list. - staticfiles.E002: Pengaturan
STATICFILES_DIRS
harus tidak mengandung pengaturan :setting:`STATIC_ROOT.