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.
CheckMessage
¶CheckMessage
(level, msg, hint=None, obj=None, id=None)¶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
DEBUG
, INFO
, WARNING
, ERROR
, CRITICAL
. Jika tingkatan lebih hebat atau sama dengan ERROR
, kemudian Django akan mencegah perintah pengelolaan dari menjalankan. Pesan-pesan dengan tingkatan lebih rendah dari ERROR
(yaitu peringatan) dilaporkan ke konsol, tetapi dapat disenyapkan.msg
hint
None
dapat digunakan.obj
__str__()
. Metode ini digunakan selagi melaporkan semua pesan dan hasilnya mendahului pesan.id
applabel.X001
, dimana X
adalah satu dari huruf CEWID
, 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.
Debug
(msg, hint=None, obj=None, id=None)¶Info
(msg, hint=None, obj=None, id=None)¶Warning
(msg, hint=None obj=None, id=None)¶Error
(msg, hint=None, obj=None, id=None)¶Critical
(msg, hint=None, obj=None, id=None)¶Sistem pemeriksaan Django diorganisasikan menggunakan etiket berikut:
admin
: Memeriksa pernyataan situs admin apapun.async_support
: Memeriksa konfigurasi terkait-asinkron.caches
: Memeriksa penyimpanan konfigurasi terkait.compatibility
: Masalah potensial tanda dengan versi ditingkatkan.database
: Memeriksa masalah konfigurasi hubungan-basisdata. Pemeriksanaan basisdata tidak berjalan secara awalan karena mereka melakukan lebih dari analisa kode seperti yang biasa lakukan. Mereka hanya berjalan dengan perintah the migrate
atau jika anda menentukan nama lain basisdata yang dikonfigurasi menggunakan pilihan --database
ketika memanggil perintah check
.files
: Memeriksa konfigurasi berkas terkait.models
: Memeriksa bidang model, bidang, dan pengertian pengelolaan.security
: Memeriksa keamanan konfigurasi terkait.signals
: Memeriksa pada pernyataan sinyal dan penangan pendaftaran.sites
: Memeriksa konfigurasi django.contrib.sites
.staticfiles
: Memeriksa konfigurasi django.contrib.staticfiles
.templates
: Memeriksa cetakan konfigurasi terkait.translation
: Memeriksa terjemahan terkait konfigurasi.urls
: Memeriksa konfigurasi URL.Beberapa pemeriksaan mungkin didaftarkan dengan banyak etiket.
Pemeriksanaan berikut mengecek setelan anda untuk Dukungan asinkronus:
DJANGO_ALLOW_ASYNC_UNSAFE
environment variable in deployment. This disables async safety
protection.Peringatan pemeriksaan kesesuaian dari kemungkinan masalah-masalah yang akan muncul setelah meningkatkan Django.
<pattern>
mempunyai sebuah route
yang mengandung (?P<
, dimulai dengan ^
, atau berakhir dengan $
. Ini sepertinya sebuah kelalaian ketika memindahkan dari url()
ke path()
.CSRF_TRUSTED_ORIGINS
harus dimulai dengan skema (biasanya http://
atau https://
) tetapi ditemukan <hostname>
.Pemeriksaan berikut memeriksa bahwa pengaturan CACHES
anda dengan benar dikonfigurasi:
'default'
di pengaturan CACHES
.<cache>
anda mungkin membuka cache atau menuju korupsi data anda karena LOCATION
matches/is inside/contains MEDIA_ROOT
/STATIC_ROOT
/STATICFILES_DIRS
.<cache>
cache LOCATION
anda itu relatif. Gunakan jalur mutlak sebagai gantinya.Jika anda menggunakan MySQL atau MariaDB, pemeriksaan berikut akan dilakukan:
CharField
unik memiliki max_length
> 255. Pemeriksaan ini berubah pada mysql.W003
di Django 3.1 ketika ukuran asli maksimal bergantung pada banyak faktor.<alias>
. Lihat juga Mengatur sql_mode.CharField
untuk memiliki max_length
> 255.Pemeriksaan berikut memeriksa setelan anda untuk for Mengelola berkas:
FILE_UPLOAD_TEMP_DIR
mengacu pada direktori tidak ada <path>
."__"
.pk
adalah kata terpesan yang tidak dapat digunakan sebagai nama bidang.choices
harus dapat berulang (misalnya, daftar atau tuple).choices
harus berulang mengandung tuple (nama sebenarnya, nama dapat dibaca manusia)
.db_index
harus berupa None
, True
atau False
.null=True
.validators
harus dapat dipanggil.max_length
terlalu kecil untuk mengisi nilai terpanjang dalam choices
(karakter <count>
).<field>
awalan harus dapat dipanggil daripada sebuah instance sehingga dia tidak dibagi diantara semua bidang instance.BooleanField
tidak menerima nilai null. Pemeriksaan ini muncul sebelum dukungan untuk nilai null telah ditambahkan pada Django 2.1.CharField
harus menentukan atribut max_length
.max_length
harus integer positif.max_length
diabaikan ketika digunakan dengan <integer field type>
.DecimalField
harus ditentukan atribut decimal_places
.decimal_places
harus berupa integer bukan-negatif.DecimalField
harus ditentukan atribut max_digits
.max_digits
harus berupa integer positif.max_digits
harus lebih besar atau sama dengan decimal_places
.FilePathField
harus mempunyai salah satu allow_files
atau allow_folders
disetel ke True.GenericIPAddressField
tidak boleh memiliki blank=True
jika null=False
, sebagai nilai kosong disimpan sebagai null.auto_now
, auto_now_add
, dan default
saling eksklusif. Hanya satu dari pilihan-pilihan ini mungkin dihadirkan.<database>
tidak mendukung indeks basisdata di kolom <field data type>
.<database>
tidak mendukung komentatar pada kolom (db_comment
).default
BinaryField
’tidak boleh string. Gunakan isian byte.<database>
tidak mendukung JSONField
s.<database>
tidak mendukung pengumpulan basis data pada <field_type>
s.IPAddressField
telah dipindahkan kecuali untuk dukungan dalam riwayat perpindahan.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.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.CommaSeparatedIntegerField
dipindahkan untuk dukungan dalam riwayat perpindahan.FloatRangeField
diusangkan dan akan dipindahkan di Django 3.1. Pemeriksaan ini muncul di Django 2.2 dan 3.0.NullBooleanField
diusangkan. Dukungan untuk itu (kecuali di perpindahan riwayat) akan dipindahkan di Django 4.0. Pemeriksaan ini muncul di Django 3.1 dan 3.2.NullBooleanField
dipindahkan kecuali untuk mendukung dalam perpindahan riwayat.django.contrib.postgres.fields.JSONField
diusangkan. Dukungan untuk itu (kecuali dalam perpindahan riwayat) akan dipindahkan di Django 4.0. Pemeriksaan ini muncul di Django 3.1 dan 3.2.django.contrib.postgres.fields.JSONField
dipindahkan kecuali untuk dukungan dalam perpindahan riwayat.django.contrib.postgres.fields.CICharField
diusangkan. Dukungan untuk itu (kecuali dalam perpindahan riwayat) akan dipindahkan di Django 5.1.django.contrib.postgres.fields.CITextField
diusangkan. Dukungan untuk itu (kecuali dalam perpindahan riwayat) akan dipindahkan di Django 5.1.unique
bukan argumen sah untuk FileField
. Pemeriksaan ini dipindahkan dalam Django 1.11.primary_key
bukan argumen sah untuk FileField
.upload_to
``FileField``harus berupa jalur bergantung, bukan jalur mutlak.ImageField
karena Pillow tidak dipasang.<swappable>
bukan dari formulir app_label.app_name
.<SETTING>
acuan <model>
, yang belum dipasang, atau abstrak.<app_label>.<model>
.id
dapat hanya digunakan sebagai nama bidang jika bidang juga disetel primary_key=True
.<field name>
dari model induk <model>
bentrok dengan bidang <field name>
dari model induk <model>
.<field name>
bentrokan dengan bidang <field name>
dari model <model>
.<field name>
mempunyai nama kolom <column name>
yang digunakan oleh bidang lain.index_together
harus berupa daftar atau tuple.index_together
harus berupa daftar atau tuple.unique_together
harus berupa daftar atau tuple.unique_together
harus berupa daftar atau tuple.constraints/indexes/index_together/unique_together
mengacu pada bidang yang tidak ada <field name>
.constraints/indexes/index_together/unique_together
mengacu pada ManyToManyField
<field name>
, tetapi ManyToManyField
tidak didukung untuk pilihan itu.ordering
harus berupa tuple atau daftar (bahkan jika anda ingin memesan hanya satu bidang).ordering
mengacu pada bidang tidak ada, bidang terkait, atau pencarian <field name>
.constraints/indexes/index_together/unique_together
refers to field <field_name>
which is not local to model <model>
.<model>
mengandung bidang-bidang model.<field>
. Panjang maksimum adalah <maximum length>
untuk basisdata <alias>
.<M2M field>
. Panjang maksimum adalah <maximum length>
untuk basisdata <alias>
.<model>.check()
saat ini dikesampingkan.ordering
dan order_with_respect_to
tidak dapat digunakan bersama-sama.<function>
mengandung acuan lazy pada <app label>.<model>
, tetapi aplikasi <app label>
tidak dipasang atau tidak menyediakan model <model>
.1
tidak dapat mulai atau berakhir dengan sebuah garis bawah ketika itu bertabrakan dengan sintaksis penacrian permintaan.1
tidak dapat mengandung garis bawah ganda ketika itu bertabrakan dengan sintaksis pencarian permintaan.<property name>
bertabrakan dengan pengakses bidang terkait.primary_key=True
.<database>
tidak mendukung batasan pemeriksaan.db_table
<db_table>
digunakan oleh banyak model: <model list>
.<index>
bukan unik untuk model <model>
.<index>
tidak unik terhadap model: <model list>
.<constraint>
bukan unik untuk model <model>
.<constraint>
is not unique among
models: <model list>
.<index>
tidak dapat dimulai dengan garis bawah atau angka.<index>
tidak dapat lebih panjang daripada <max_length>
karakter.db_table
<db_table>
digunakan oleh banyak model: <model list>
.<database>
does not support unique constraints with
conditions.<database>
does not support indexes with conditions.<database>
does not support deferrable unique
constraints.<database>
does not support unique constraints with
non-key columns.<database>
does not support indexes with non-key
columns.constraints
refers to the joined field <field name>
.django.db.models.AutoField
.<database>
does not support indexes on expressions.<database>
does not support unique constraints on
expressions.<constraint>
contains RawSQL()
expression and won't be validated during the model full_clean()
.<database>
does not support comments on tables
(db_table_comment
).The security checks do not make your site secure. They do not audit code, do intrusion detection, or do anything particularly complex. Rather, they help perform an automated, low-hanging-fruit checklist, that can help you to improve your site's security.
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
:
django.middleware.security.SecurityMiddleware
in your
MIDDLEWARE
so the SECURE_HSTS_SECONDS
,
SECURE_CONTENT_TYPE_NOSNIFF
, SECURE_REFERRER_POLICY
,
SECURE_CROSS_ORIGIN_OPENER_POLICY
, and
SECURE_SSL_REDIRECT
settings will have no effect.django.middleware.clickjacking.XFrameOptionsMiddleware
dalam MIDDLEWARE
, 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.django.middleware.csrf.CsrfViewMiddleware
tidak dalam pengaturan MIDDLEWARE
anda). Mengadakan middleware adalah pendekatan teraman untuk memastikan anda tidak meninggalkan celah apapun.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.SECURE_HSTS_INCLUDE_SUBDOMAINS
menjadi True
. Tanpa ini, situs anda berpotensi rentan pada serangan melalui hubungan tidak aman ke subranah. Hanya setel ini menjadi True
jika anda yakin bajwa semua subranah dari ranah anda harus dilayani secara khusus melalui SSL.SECURE_CONTENT_TYPE_NOSNIFF
anda tidak disetel menjadi True
, sehingga halaman anda tidak akan dilayani dengan sebuah kepala 'X-Content-Type-Options: nosniff'
. Anda harus mempertimbangankan mengadakan kepala ini untuk mencegah peramban dari mencirikan jenis-jenis isi dengan tidak benar.SECURE_BROWSER_XSS_FILTER
setting is not
set to True
, so your pages will not be served with an
'X-XSS-Protection: 1; mode=block'
header. You should consider enabling
this header to activate the browser's XSS filtering and help prevent XSS
attacks. This check is removed in Django 3.0 as the X-XSS-Protection
header is no longer honored by modern browsers.SECURE_SSL_REDIRECT
anda tidak disetel menjadi True
. Meskipun situs anda harus tersedia terhadap kedua hubungan SSL dan bukan-SSL, anda mungkin ingin antara menyetel pengaturan ini menjadi True
atau konfigurasi sebuah penyeimbang muatan atau peladen membalikkan-proxy ke mengalihkan semua hubungan pada HTTPS.SECRET_KEY
has less than 50 characters,
less than 5 unique characters, or it's prefixed with 'django-insecure-'
indicating that it was generated automatically by Django. Please generate a
long and random value, otherwise many of Django's security-critical features
will be vulnerable to attack.django.contrib.sessions
di INSTALLED_APPS
anda tetapi anda belum menyetel SESSION_COOKIE_SECURE
menjadi True
. Menggunakan kue sesi hanya-aman membuatnya lebih sulit untuk lalu lintas jaringan sapu tangan untuk membajak sesi pengguna.django.contrib.sessions.middleware.SessionMiddleware
dalam MIDDLEWARE
anda, tetapi anda belum menyetel SESSION_COOKIE_SECURE
menjadi True
. Menggunakan sesi kue hanya-aman membuatnya lebih sulit untuk pencium lalu lintas jaringan membajak sesi pengguna.SESSION_COOKIE_SECURE
tidak disetel menjadi True
. Menggunakan kue sesi hanya-aman membuatnya lebih sulit untuk lalu lintas jaringan sapu tangan untuk membajak sesi pengguna.django.contrib.sessions
di INSTALLED_APPS
anda, tetapi anda belum menyetel SESSION_COOKIE_HTTPONLY
menjadi True
. Menggunakan kue sesi HttpOnly
membuatnya lebih sulit untuk serangan penulisan lintas-situs untuk membajak sesi pengguna.django.contrib.sessions.middleware.SessionMiddleware
dalam MIDDLEWARE
anda, tetapi anda belum menyetel SESSION_COOKIE_HTTPONLY
menjadi True
. Menggunakan sebuah sesi kue HttpOnly
membuatnya itu lebih sulit untuk serangan cross-site scripting untuk membajaksesi pengguna.SESSION_COOKIE_HTTPONLY
tidak disetel menjadi True
. Menggunakan kue sesi HttpOnly
membuatnya lebih sulit untuk serangan penulisan lintas-situs untuk membajak sesi pengguna.CSRF_COOKIE_SECURE
tidak disetel menjadi True
. Menggunakan kue CSRF hanya-aman membuatnya lebih sulit untuk lalu lintas jaringan sapu tangan untuk mencuri token CSRF.CSRF_COOKIE_HTTPONLY
is not set to True
.
Using an HttpOnly
CSRF cookie makes it more difficult for cross-site
scripting attacks to steal the CSRF token. This check is removed in Django
1.11 as the CSRF_COOKIE_HTTPONLY
setting offers no practical
benefit.DEBUG
disetel ke True
dalam menyebarkan.django.middleware.clickjacking.XFrameOptionsMiddleware
in your
MIDDLEWARE
, but X_FRAME_OPTIONS
is not set to
'DENY'
. Unless there is a good reason for your site to serve other parts
of itself in a frame, you should change it to 'DENY'
.ALLOWED_HOSTS
harus tidak kosong dalam menyebarkan.SECURE_HSTS_PRELOAD
menjadi True
. Tanpa ini, situs anda tidak dapat diajukan ke daftar pramuat peramban.SECURE_REFERRER_POLICY
setting. Without this, your site will not send a Referrer-Policy header. You
should consider enabling this header to protect user privacy.SECURE_REFERRER_POLICY
menjadi nilai tidak sah.SECURE_CROSS_ORIGIN_OPENER_POLICY
setting to an invalid value.SECRET_KEY_FALLBACKS[n]
has less than 50
characters, less than 5 unique characters, or it's prefixed with
'django-insecure-'
indicating that it was generated automatically by
Django. Please generate a long and random value, otherwise many of Django's
security-critical features will be vulnerable to attack.The following checks verify that your security-related settings are correctly configured:
DEFAULT_HASHING_ALGORITHM
must be 'sha1'
or
'sha256'
. This check appeared in Django 3.1 and 3.2.'path.to.view'
does not take the
correct number of arguments.'path.to.view'
could not be
imported.<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>
.Pemeriksaan berikut memeriksa bahwa pengaturan TEMPLATES
anda dengan benar dikonfigurasi:
'APP_DIRS': True
di TEMPLATES
anda tetapi juga menentukan 'loaders'
di OPTIONS
. Antara memindahkan APP_DIRS
atau memindahkan pilihan 'loaders'
.string_if_invalid
di setting:TEMPLATES OPTIONS
harus berupa string tetapi mendapatkan: {value}
({type}
).<name>
is used for multiple template tag modules:
<module list>
. This check was changed to templates.W003
in Django
4.1.2.<name>
is used for multiple template tag modules:
<module list>
.Pemeriksaan berikut dilakukan pada konfigurasi terjemahan anda:
LANGUAGE_CODE
: <value>
.LANGUAGES
setting: <value>
.LANGUAGES_BIDI
: <value>
.LANGUAGE_CODE
yang tidak di dalam pengaturan LANGUAGES
.Pemeriksaan berikut dilakukan di konfigurasi URL anda:
<pattern>
menggunakan include()
dengan route
akhiran $
. Memindahkan dolar dari route
untuk menghindari masalah termasuk URL.<pattern>
mempunyai route
dimulai dengan sebuah /
. Pindahkan garis miring ini ketika itu tidak dibutuhkan. Jika pola ini disasarkan dalam sebuah include()
, pastikan pola include()
mempunyai buntutan /
.<pattern>
URL mempunyai name
termasuk sebuah :
. Pindahkan titik dua, untuk menghindari dua arti acuan namespace.<pattern>
tidak sah. Pastikan bahwa urlpatterns
adalah daftar dari path()
dan/atau contoh re_path()
.1
tidak unik. Anda mungkin tidak dapat membalikkan semua URL dalam namespace ini.MEDIA_URL
/ STATIC_URL
harus berakhir dengan sebuah garis miring.handlerXXX
penyesuaian 'path.to.view'
tidak mengambil angka benar dari argumen (…).'path.to.view'
tidak dapat diterapkan.<pattern>
has an invalid view, pass
<view>.as_view()
instead of <view>
.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:
raw_id_fields
harus berupa daftar atau tuple.raw_id_fields[n]
refers to <field name>
,
which is not a field of <model>
.raw_id_fields[n]
harus foreign key atau bidang many-to-many.fields
harus berupa daftar atau tuple.fieldsets
dan fields
ditentukan.fields
mengandung bidang ganda.fieldsets
harus berupa daftar atau tuple.fieldsets[n]
harus berupa daftar atau tuple.fieldsets[n]
harus panjang 2.fieldsets[n][1]
harus berupa kamus.fieldsets[n][1]
harus mengandung kunci fields
.fieldsets[n][1]
.fields[n]/fieldsets[n][m]
cannot include the
ManyToManyField
<field name>
, because that field manually specifies a
relationship model.exclude
harus berupa daftar atau tuple.exclude
mengandung bidang ganda.form
harus warisan dari BaseModelForm
.filter_vertical
harus berupa daftar atau tuple.filter_horizontal
harus berupa daftar atau tuple.filter_vertical[n]/filter_horizontal[n]
refers to <field name>
, which is not a field of <model>
.filter_vertical[n]/filter_horizontal[n]
must be a many-to-many field.radio_fields
harus berupa kamus.radio_fields
refers to <field name>
,
which is not a field of <model>
.radio_fields
refers to <field name>
,
which is not an instance of ForeignKey
, and does not have a choices
definition.radio_fields[<field name>]
harus berupa admin.HORIZONTAL
atau admin.VERTICAL
.view_on_site
harus berupa callable atau nilai boolean.prepopulated_fields
harus berupa kamus.prepopulated_fields
refers to
<field name>
, which is not a field of <model>
.prepopulated_fields
mengacu pada <field name>
, yang harus tidak berupa sebuah bidang DateTimeField
, ForeignKey
, OneToOneField
, atau ManyToManyField
.prepopulated_fields[<field name>]
harus berupa daftar atau tuple.prepopulated_fields
refers to
<field name>
, which is not a field of <model>
.ordering
harus berupa daftar atau tuple.ordering
mempunyai pembuat urutan acak ?
, tetapi mengandung bidang lain juga.ordering
refers to <field name>
, which
is not a field of <model>
.readonly_fields
harus berupa sebuah daftar atau tuple.readonly_fields[n]
adalah tidak callable, sebuah atribut dari <ModelAdmin class>
, atau sebuah atribut dari <model>
.autocomplete_fields
harus berupa list atau tuple.autocomplete_fields[n]
refers to
<field name>
, which is not a field of <model>
.autocomplete_fields[n]
harus berupa sebuah foreign key atau bidang many-to-many.<model>
harus didaftarkan untuk diacukan oleh <modeladmin>.autocomplete_fields
.<modeladmin>
harus menentukan search_fields
, karena itu diacukan oleh``<other_modeladmin>.autocomplete_fields``.ModelAdmin
¶Pemeriksaan berikut dilakukan di setiap ModelAdmin
yang terdaftar dengan situs admin:
save_as
harus boolean.save_on_top
harus boolean.inlines
harus berupa sebuahd daftar atau tuple.<InlineModelAdmin class>
harus mewarisi dari InlineModelAdmin
.<InlineModelAdmin class>
harus mempunyai atribut model
.<InlineModelAdmin class>.model
harus berupa Model
.list_display
harus berupa daftar atau tuple.list_display[n]
merujuk pada``<label>``, yang merupakan bukan callable, sebuah atribut dari <ModelAdmin class>
, atau sebuah atribut atau metode di <model>
.list_display[n]
harus tidak berupa bidang ManyToManyField
.list_display_links
harus berupa daftar, tuple atau None
.list_display_links[n]
mengacu pada <label>
, yang tidak ditentukan di list_display
.list_filter
harus berupa daftar atau tuple.list_filter[n]
harus warisan dari ListFilter
.list_filter[n]
harus bukan warisan dari FieldListFilter
.list_filter[n][1]
harus warisan dari FieldListFilter
.list_filter[n]
mengacu pada <label>
, yang bukan mengacu pada sebuah Bidang.list_select_related
harus berupa boolean, tuple atau daftar.list_per_page
harus berupa integer.list_max_show_all
harus berupa integer.list_editable
harus berupa sebuah daftar atau tuple.list_editable[n]
refers to <label>
,
which is not a field of <model>
.list_editable[n]
mengacu pada <label>
, yang tidak berisi di list_display
.list_editable[n]
tidak dapat di kedua list_editable
dan list_display_links
.list_editable[n]
mengacu pada bidang pertama di list_display
(<label>
), yang tidak dapat digunakan meskipun list_display_links
disetel.list_editable[n]
mengacu pada <field name>
, yang tidak dapat disunting melalui admin.search_fields
harus berupa sebuah daftar atau tuple.date_hierarchy
mengacu pada <field name>
, yang tidak mengacu ke sebuah Bidang.date_hierarchy
harus berupa DateField
atau DateTimeField
.<modeladmin>
harus menentukan metode has_<foo>_permission()
untuk tindakan <action>
.__name__
attributes of actions defined in
<modeladmin>
must be unique. Name <name>
is not unique.InlineModelAdmin
¶Pemeriksaan berikut dilakukan pada setiap InlineModelAdmin
yang didaftarkan sebagai sebaris pada ModelAdmin
.
<field name>
, karena itu adalah foreign key pada model induk <app_label>.<model>
.<model>
has no ForeignKey
to <parent model>
./
<model>
has more than one ForeignKey
to <parent model>
. You must
specify a fk_name
attribute.extra
harus berupa integer.max_num
harus berupa integer.min_num
harus berupa integer.formset
harus warisan dari BaseModelFormSet
.GenericInlineModelAdmin
¶Pemeriksaan berikut dilakukan pada setiap GenericInlineModelAdmin
yang didaftarkan sebagai berderet pada ModelAdmin
.
'ct_field'
acuan <label>
, yang bukan bidang di <model>
.'ct_fk_field'
acuan <label>
, yang bukan bidang pada <model>
.<model>
tidak mempunyai GenericForeignKey
.<model>
tidak mempunyai GenericForeignKey
menggunakan <field name>
bidang jenis isi dan <field name>
bidang ID obyek.AdminSite
¶Pemeriksaan berikut dilakukan pada awalan AdminSite
:
django.contrib.contenttypes
harus di INSTALLED_APPS
untuk menggunakan aplikasi admin.django.contrib.auth.context_processors.auth
harus diadakan dalam DjangoTemplates
(TEMPLATES
) jika menggunakan autentifikasi backend awalan untuk menggunakan aplikasi admin.django.template.backends.django.DjangoTemplates
harus dikonfigurasi dalam TEMPLATES
untuk menggunakan aplikasi admin.django.contrib.messages.context_processors.messages
harus diadakan dalam DjangoTemplates
(TEMPLATES
) untuk menggunakan aplikasi admin.django.contrib.auth
harus berada dalam INSTALLED_APPS
untuk menggunakan aplikasi admin.django.contrib.messages
harus berada dalam INSTALLED_APPS
utnuk menggunakan aplikasi admin.django.contrib.auth.middleware.AuthenticationMiddleware
harus berada dalam MIDDLEWARE
untuk menggunakan aplikasi admin.django.contrib.messages.middleware.MessageMiddleware
harus berada dalam MIDDLEWARE
untuk menggunakan aplikasi admin.django.contrib.sessions.middleware.SessionMiddleware
harus berada dalam MIDDLEWARE
untuk menggunakan aplikasi admin.django.template.context_processors.request
must be
enabled in DjangoTemplates
(TEMPLATES
) in order to use the admin navigation sidebar.auth
¶REQUIRED_FIELDS
harus berupa daftar atau rekaman.USERNAME_FIELD
untuk model pengguna penyesuaian harus tidak disertakan di REQUIRED_FIELDS
.<field>
harus unik karena itu dinamai sebagai USERNAME_FIELD
.<field>
dinamai sebagai USERNAME_FIELD
, tetapi itu tidak unik.<codename>
bentrok dengan perizinan siap pakai untuk model <model>
.<codename>
digunakan untuk model <model>
.verbose_name
dari model <model>
harus berupa paling banyak 244 karakter untuk nama-nama perizinan siap pakainya menjadi paling banyak 255 karakter.<name>
dari model <model>
tidak lebih panjang dari 255 karakter.<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!<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!<model>
must be at most 93 characters
for its builtin permission names to be at most 100 characters.<codename>
of model <model>
is longer than 100 characters.contenttypes
¶Pemeriksaan berikut dilakukan ketika sebuah model mengandung sebuah GenericForeignKey
atau GenericRelation
:
GenericForeignKey
mengacu bidang tidak ada <field>
.GenericForeignKey
mengacu field <field>
yang tidak ada.<field>
bukan ForeignKey
.<field>
bukan ForeignKey
pada contenttypes.ContentType
.postgres
¶Pemeriksaan berikut dilakukan pada bidang model django.contrib.postgres
:
<field>
default should be a callable instead of an
instance so that it's not shared between all field instances. This check was
changed to fields.E010
in Django 3.1.sites
¶Pemeriksaan berikut dilakukan pada setiap model menggunakan CurrentSiteManager
:
CurrentSiteManager
tidak dapat menemukan sebuah bidang dinamai <field name>
.CurrentSiteManager
tidak dapat menggunakan <field>
karena itu adalah bukan foreign key atau bidang many-to-many.The following checks verify that django.contrib.sites
is correctly
configured:
SITE_ID
setting must be an integer.staticfiles
¶Pemeriksaan berikut mensahkan bahwa django.contrib.staticfiles
dikonfigurasi dengan benar.
STATICFILES_DIRS
bukan tuple atau list.STATICFILES_DIRS
harus tidak mengandung pengaturan :setting:`STATIC_ROOT.<prefix>
dalam pengaturan STATICFILES_DIRS
tidak boleh diakhiri dengan sebuah garis miring.<directory>
in the
STATICFILES_DIRS
does not exist.Des 04, 2023