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

class CheckMessage(level, msg, hint=None, obj=None, id=None)[sumber]

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 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
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, 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.

class Debug(msg, hint=None, obj=None, id=None)[sumber]
class Info(msg, hint=None, obj=None, id=None)[sumber]
class Warning(msg, hint=None obj=None, id=None)[sumber]
class Error(msg, hint=None, obj=None, id=None)[sumber]
class Critical(msg, hint=None, obj=None, id=None)[sumber]

Etiket siap pakai

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: Checks database-related configuration issues. Database checks are not run by default because they do more than static code analysis as regular checks do. They are only run by the migrate command or if you specify configured database aliases using the --database option when calling the check command.
  • files: Checks files related configuration.
  • 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.

Changed in Django 3.2:

Etiket sites telah ditambahkan.

Changed in Django 4.0:

Etiket files telah ditambahkan.

Memeriksa sistem inti

Dukungan asinkronus

Pemeriksanaan berikut mengecek setelan anda untuk Dukungan asinkronus:

Kesesuaian kebelakang

Peringatan pemeriksaan kesesuaian dari kemungkinan masalah-masalah yang akan muncul setelah meningkatkan Django.

  • 2_0.W001: pola URL anda <pattern> mempunyai sebuah route yang mengandung (?P<, dimulai dengan ^, atau berakhir dengan $. Ini sepertinya sebuah kelalaian ketika memindahkan dari url() ke path().
  • 4_0.E001: As of Django 4.0, the values in the CSRF_TRUSTED_ORIGINS setting must start with a scheme (usually http:// or https://) but found <hostname>.

Tembolok

Pemeriksaan berikut memeriksa bahwa pengaturan CACHES anda dengan benar dikonfigurasi:

  • caches.E001: Anda harus menentukan sebuah penyimpanan 'default' di pengaturan CACHES.
  • caches.W002: Your <cache> configuration might expose your cache or lead to corruption of your data because its LOCATION matches/is inside/contains MEDIA_ROOT/STATIC_ROOT/STATICFILES_DIRS.
  • caches.W003: <cache> cache LOCATION anda itu relatif. Gunakan jalur mutlak sebagai gantinya.

Basisdata

MySQL dan MariaDB

Jika anda menggunakan MySQL atau MariaDB, pemeriksaan berikut akan dilakukan:

  • mysql.E001: MySQL/MariaDB does not allow unique CharFields to have a max_length > 255. This check was changed to mysql.W003 in Django 3.1 as the real maximum size depends on many factors.
  • mysql.W002: MySQL/MariaDB Strict Mode is not set for database connection <alias>. See also Mengatur sql_mode.
  • mysql.W003: MySQL/MariaDB may not allow unique CharFields to have a max_length > 255.

Mengelola berkas

New in Django 4.0.

The following checks verify your setup for Mengelola berkas:

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 (misalnya, daftar atau tuple).
  • fields.E005: choices must be an iterable containing (actual value, human readable name) tuples.
  • fields.E006: db_index harus berupa None, True atau False.
  • fields.E007: Primary key tidak harus mempunyai null=True.
  • fields.E008: Semua validators harus dapat dipanggil.
  • fields.E009: max_length terlalu kecil untuk mengisi nilai terpanjang dalam choices (karakter <count>).
  • fields.E010: <field> default should be a callable instead of an instance so that it's not shared between all field instances.
  • fields.E100: ``AutoField harus disetel primary_key=True.
  • fields.E110: BooleanField tidak menerima nilai null. Pemeriksaan ini muncul sebelum dukungan untuk nilai null telah ditambahkan pada Django 2.1.
  • fields.E120: CharField harus menentukan atribut max_length.
  • fields.E121: max_length harus integer positif.
  • fields.W122: max_length diabaikan ketika digunakan dengan <integer field type>.
  • fields.E130: DecimalField harus ditentukan atribut decimal_places.
  • fields.E131: decimal_places harus berupa integer bukan-negatif.
  • fields.E132: DecimalField harus ditentukan atribut max_digits.
  • fields.E133: max_digits must be a positive integer.
  • fields.E134: max_digits harus lebih besar atau sama dengan decimal_places.
  • fields.E140: FilePathField harus mempunyai salah satu allow_files atau allow_folders disetel ke True.
  • fields.E150: GenericIPAddressFields cannot have blank=True if null=False, as blank values are stored as nulls.
  • fields.E160: Pilihan auto_now, auto_now_add, dan default saling eksklusif. Hanya satu dari pilihan-pilihan ini mungkin dihadirkan.
  • fields.W161: Nilai awal tetap disediakan.
  • fields.W162: <database> tidak mendukung indeks basisdata di kolom <field data type>.
  • fields.E170: BinaryField’s default cannot be a string. Use bytes content instead.
  • fields.E180: <database> tidak mendukung JSONFields.
  • fields.E190: <database> tidak mendukung pengumpulan basis data pada <field_type>s.
  • 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.
  • fields.W902: FloatRangeField is deprecated and will be removed in Django 3.1. This check appeared in Django 2.2 and 3.0.
  • fields.W903: NullBooleanField is deprecated. Support for it (except in historical migrations) will be removed in Django 4.0. This check appeared in Django 3.1 and 3.2.
  • fields.E903: NullBooleanField is removed except for support in historical migrations.
  • fields.W904: django.contrib.postgres.fields.JSONField is deprecated. Support for it (except in historical migrations) will be removed in Django 4.0. This check appeared in Django 3.1 and 3.2.
  • fields.E904: django.contrib.postgres.fields.JSONField is removed except for support in historical migrations.

Bidang-bidang berkas

  • fields.E200: unique bukan argumen sah untuk FileField. Pemeriksaan ini dipindahkan dalam Django 1.11.
  • fields.E201: primary_key bukan argumen sah untuk FileField.
  • 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 formulir app_label.app_name.
  • models.E002: <SETTING> acuan <model>, yang belum dipasang, atau abstrak.
  • models.E003: Model emiliki dua kemiripan hubungan many-to-many melalui model menengah <app_label>.<model>.
  • models.E004: id dapat hanya digunakan sebagai nama bidang jika bidang juga disetel primary_key=True.
  • models.E005: Bidang <field name> dari model induk <model> bentrok dengan bidang <field name> dari model induk <model>.
  • models.E006: The field <field name> clashes with the field <field name> from 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: constraints/indexes/index_together/unique_together refers to the nonexistent field <field name>.
  • models.E013: constraints/indexes/index_together/unique_together refers to a ManyToManyField <field name>, but ManyToManyFields are not supported for that option.
  • models.E014: ordering harus berupa tuple atau daftar (bahkan jika anda ingin memesan hanya satu bidang).
  • models.E015: ordering refers to the nonexistent field, related field, or lookup <field name>.
  • models.E016: constraints/indexes/index_together/unique_together refers to field <field_name> which is not local to 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 dan order_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.
  • models.E025: Sifat <property name> bertabrakan dengan pengakses bidang terkait.
  • models.E026: Model tidak boleh memiliki lebih dari satu bidang dengan primary_key=True.
  • models.W027: <database> tidak mendukung batasan pemeriksaan.
  • models.E028: db_table <db_table> digunakan oleh banyak model: <model list>.
  • models.E029: nama indeks <index> bukan unik untuk model <model>.
  • models.E030: index name <index> is not unique among models: <model list>.
  • models.E031: batasan nama <constraint> bukan unik untuk model <model>.
  • models.E032: constraint name <constraint> is not unique among models: <model list>.
  • models.E033: Nama indeks <index> tidak dapat dimulai dengan garis bawah atau angka.
  • models.E034: Nama indeks <index> tidak dapat lebih panjang daripada <max_length> karakter.
  • models.W035: db_table <db_table> digunakan oleh banyak model: <model list>.
  • models.W036: <database> does not support unique constraints with conditions.
  • models.W037: <database> does not support indexes with conditions.
  • models.W038: <database> does not support deferrable unique constraints.
  • models.W039: <database> does not support unique constraints with non-key columns.
  • models.W040: <database> does not support indexes with non-key columns.
  • models.E041: constraints refers to the joined field <field name>.
  • models.W042: Auto-created primary key used when not defining a primary key type, by default django.db.models.AutoField.
  • models.W043: <database> does not support indexes on expressions.
  • models.W044: <database> does not support unique constraints on expressions.

Keamanan

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:

  • security.W001: You do not have 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.
  • security.W002: Anda tidak mempunyai 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.
  • security.W003: Anda sepertinya tidak menggunakan perlindungan siap-pakai cross-site request forgery Django melalui middleware (django.middleware.csrf.CsrfViewMiddleware tidak dalam pengaturan MIDDLEWARE anda). Mengadakan middleware adalah pendekatan teraman untuk memastikan anda tidak meninggalkan celah apapun.
  • 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 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.
  • security.W006: Pengaturan 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.
  • security.W007: Your 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.
  • security.W008: Pengaturan 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.
  • security.W009: Your 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 SECRET_KEY, otherwise many of Django's security-critical features will be vulnerable to attack.
  • security.W010: Anda memiliki 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.
  • security.W011: Anda memiliki 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.
  • security.W012: 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.
  • security.W013: Anda memiliki 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.
  • security.W014: Anda memiliki 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.
  • security.W015: SESSION_COOKIE_HTTPONLY tidak disetel menjadi True. Menggunakan kue sesi HttpOnly membuatnya lebih sulit untuk serangan penulisan lintas-situs untuk membajak sesi pengguna.
  • security.W016: 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.
  • security.W017: 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.
  • security.W018*: Anda harus mempunyai DEBUG disetel ke True dalam menyebarkan.
  • security.W019: You have 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'.
  • security.W020: ALLOWED_HOSTS harus tidak kosong dalam menyebarkan.
  • security.W021: Anda belum menyetel pengaturan SECURE_HSTS_PRELOAD menjadi True. Tanpa ini, situs anda tidak dapat diajukan ke daftar pramuat peramban.
  • security.W022: You have not set the 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.
  • security.E023: Anda telah mensetel pengaturan SECURE_REFERRER_POLICY menjadi nilai tidak sah.
  • security.E024: You have set the SECURE_CROSS_ORIGIN_OPENER_POLICY setting to an invalid value.

The following checks verify that your security-related settings are correctly configured:

  • security.E100: DEFAULT_HASHING_ALGORITHM must be 'sha1' or 'sha256'. This check appeared in Django 3.1 and 3.2.
  • security.E101: The CSRF failure view 'path.to.view' does not take the correct number of arguments.
  • security.E102: The CSRF failure view 'path.to.view' could not be imported.

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>.

Templat

Pemeriksaan berikut memeriksa bahwa pengaturan TEMPLATES anda dengan benar dikonfigurasi:

  • templates.E001: Anda mempunyai 'APP_DIRS': True di TEMPLATES anda tetapi juga menentukan 'loaders' di OPTIONS. Antara memindahkan APP_DIRS atau memindahkan pilihan 'loaders'.
  • templates.E002: string_if_invalid di setting:TEMPLATES OPTIONS harus berupa string tetapi mendapatkan: {value} ({type}).

Terjemahan

Pemeriksaan berikut dilakukan pada konfigurasi terjemahan anda:

  • translation.E001: Anda telah menyediakan nilai tidak sah untuk pengaturan LANGUAGE_CODE: <value>.
  • translation.E002: Anda telah menyediakan kode bahasa tidak sah dalam LANGUAGES setting: <value>.
  • translation.E003: Anda telah menyediakan kode bahasa tidak sah dalam pengaturan LANGUAGES_BIDI: <value>.
  • translation.E004: Anda telah menyediakan sebuah nilai untuk pengaturan LANGUAGE_CODE yang tidak di dalam pengaturan LANGUAGES.

URL

Pemeriksaan berikut dilakukan di konfigurasi URL anda:

  • urls.W001: Pola URL anda <pattern> menggunakan include() dengan route akhiran $. Memindahkan dolar dari route untuk menghindari masalah termasuk URL.
  • urls.W002: Pola URL anda <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 /.
  • urls.W003: Corak <pattern> URL mempunyai name termasuk sebuah :. Pindahkan titik dua, untuk menghindari dua arti acuan namespace.
  • urls.E004: Pola URL anda <pattern> tidak sah. Pastikan bahwa urlpatterns adalah daftar dari path() dan/atau contoh re_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.
  • urls.E007: Tampilan handlerXXX penyesuaian 'path.to.view' tidak mengambil angka benar dari argumen (…).
  • urls.E008: Tampilan penyesuaian``handlerXXX`` 'path.to.view' tidak dapat diterapkan.
  • urls.E009: Your URL pattern <pattern> has an invalid view, pass <view>.as_view() instead of <view>.

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: The value of raw_id_fields[n] refers to <field name>, which is not a field of <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 dan fields 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 kunci fields.
  • 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 dari BaseModelForm.
  • 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: The value of filter_vertical[n]/filter_horizontal[n] refers to <field name>, which is not a field of <model>.
  • admin.E020: The value of filter_vertical[n]/filter_horizontal[n] must be a many-to-many field.
  • admin.E021: Nilai dari radio_fields harus berupa kamus.
  • admin.E022: The value of radio_fields refers to <field name>, which is not a field of <model>.
  • admin.E023: The value of radio_fields refers to <field name>, which is not an instance of ForeignKey, and does not have a choices definition.
  • admin.E024: Nilai dari radio_fields[<field name>] harus berupa admin.HORIZONTAL atau admin.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: The value of prepopulated_fields refers to <field name>, which is not a field of <model>.
  • admin.E028: Nilai dari prepopulated_fields mengacu pada <field name>, yang harus tidak berupa sebuah bidang DateTimeField, ForeignKey, OneToOneField, atau ManyToManyField.
  • admin.E029: Nilai dari prepopulated_fields[<field name>] harus berupa daftar atau tuple.
  • admin.E030: The value of prepopulated_fields refers to <field name>, which is not a field of <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: The value of ordering refers to <field name>, which is not a field of <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: The value of autocomplete_fields[n] refers to <field name>, which is not a field of <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 menentukan search_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 dari InlineModelAdmin.
  • admin.E105: <InlineModelAdmin class> harus mempunyai atribut model.
  • admin.E106: Nilai dari <InlineModelAdmin class>.model harus berupa Model.
  • 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 bidang ManyToManyField.
  • admin.E110: Nilai dari list_display_links harus berupa daftar, tuple atau None.
  • admin.E111: Nilai dari list_display_links[n] mengacu pada <label>, yang tidak ditentukan di list_display.
  • admin.E112: Nilai dari list_filter harus berupa daftar atau tuple.
  • admin.E113: Nilai dari list_filter[n] harus warisan dari ListFilter.
  • admin.E114: Nilai dari list_filter[n] harus bukan warisan dari FieldListFilter.
  • admin.E115: Nilai dari list_filter[n][1] harus warisan dari FieldListFilter.
  • 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: The value of list_editable[n] refers to <label>, which is not a field of <model>.
  • admin.E122: Nilai dari list_editable[n] mengacu pada <label>, yang tidak berisi di list_display.
  • admin.E123: Nilai dari list_editable[n] tidak dapat di kedua list_editable dan list_display_links.
  • admin.E124: Nilai dari list_editable[n] mengacu pada bidang pertama di list_display (<label>), yang tidak dapat digunakan meskipun list_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 berupa DateField atau DateTimeField.
  • admin.E129: <modeladmin> harus menentukan metode has_<foo>_permission() untuk tindakan <action>.
  • admin.E130: __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.

  • admin.E201: Tidak dapat mengeluarkan bidang <field name>, karena itu adalah foreign key pada model induk <app_label>.<model>.
  • admin.E202: <model> has no ForeignKey to <parent model>./ <model> has more than one ForeignKey to <parent model>. You must specify a fk_name attribute.
  • 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 dari BaseModelFormSet.

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 mempunyai GenericForeignKey.
  • admin.E304: <model> tidak mempunyai GenericForeignKey menggunakan <field name> bidang jenis isi dan <field name> bidang ID obyek.

AdminSite

Pemeriksaan berikut dilakukan pada awalan AdminSite:

auth

  • auth.E001: REQUIRED_FIELDS harus berupa daftar atau rekaman.
  • auth.E002: Bidang bernama sebagai USERNAME_FIELD untuk model pengguna penyesuaian harus tidak disertakan di REQUIRED_FIELDS.
  • auth.E003: <field> harus unik karena itu dinamai sebagai USERNAME_FIELD.
  • auth.W004: <field> dinamai sebagai USERNAME_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!
  • auth.E011: The name of model <model> must be at most 93 characters for its builtin permission names to be at most 100 characters.
  • auth.E012: The permission codenamed <codename> of model <model> is longer than 100 characters.

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> bukan ForeignKey.
  • contenttypes.E004: <field> bukan ForeignKey pada contenttypes.ContentType.
  • contenttypes.E005: Nama-nama model harus paling banyak 100 karakter.

postgres

Pemeriksaan berikut dilakukan pada bidang model django.contrib.postgres:

  • postgres.E001: Bidang dasar untuk senarai mempunyai kesalahan: ...
  • postgres.E002: Bidang dasar untuk senarai tidak dapat berupa bidang terkait.
  • postgres.E003: <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:

  • 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.

The following checks verify that django.contrib.sites is correctly configured:

  • sites.E101: The SITE_ID setting must be an integer.

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.
  • staticfiles.E003: Awalan <prefix> dalam pengaturan STATICFILES_DIRS tidak boleh diakhiri dengan sebuah garis miring.
  • staticfiles.W004: The directory <directory> in the STATICFILES_DIRS does not exist.