Django

Penggunaan nilai lalai NULL dalam Model Django

Penggunaan nilai lalai NULL dalam Model Django
Model adalah salah satu bahagian penting dari aplikasi Django berasaskan pangkalan data. Model menentukan struktur pangkalan data. Jenis data jadual pangkalan data dan cara memasukkan data berdasarkan atribut yang berbeza dijelaskan dalam Model. Pengesahan data dapat dikendalikan dengan menggunakan model juga. Setiap jadual dalam pangkalan data mengandungi sebilangan bidang atau lajur tertentu. Model menentukan jenis setiap medan jadual. Atribut lalai digunakan dalam model untuk menetapkan nilai lalai untuk kawasan tertentu jika pengguna untuk bidang itu tidak memasukkan data. Nilai lalai medan boleh kosong atau apa-apa nilai tertentu. The batal dan kosong nilai tidak sama. batal digunakan untuk menentukan bahawa nilai kosong dibenarkan atau tidak untuk bidang tertentu. Sekiranya batal ditetapkan ke Salah, maka rentetan kosong tidak akan dibenarkan di medan taip bilangan bulat, tetapi rentetan kosong dapat diberikan di medan taip rentetan. Sekiranya batal ditetapkan ke Betul, maka nilai NULL akan diberikan di medan ketik bilangan bulat sebagai ganti rentetan kosong. blank digunakan untuk pengesahan borang terutamanya dan tidak memeriksa jenis data bidang. Cara penggunaan lalai dan batal atribut dalam model Django telah ditunjukkan dalam tutorial ini.

Prasyarat:

Sebelum mempraktikkan skrip tutorial ini, anda harus menyelesaikan tugas-tugas berikut.

A. Pasang Django versi 3+ di Ubuntu 20+ (lebih baik)
B. Buat projek Django
C. Jalankan pelayan Django untuk memeriksa pelayan berfungsi dengan betul atau tidak.

Sediakan aplikasi Django:

A. Jalankan arahan berikut untuk membuat aplikasi Django bernama pangkalan dataapp.

$ python3 menguruskan.py startapp pangkalan dataapp

B. Jalankan arahan berikut untuk membuat pengguna untuk mengakses pangkalan data Django. Sekiranya anda telah melengkapkan pengguna sebelumnya, maka anda tidak perlu menjalankan perintah.

$ python3 menguruskan.py createuperuser

C. Tambahkan nama aplikasi di DIPASANG_APP sebahagian daripada tetapan.fail py.

INSTALLED_APPS = [

'pengesahanapp'
]

D. Buat folder bernama templat di dalam pangkalan dataapp folder dan tetapkan templat lokasi aplikasi di TEMPAT sebahagian tetapan.py fail.

TEMPLATES = [

… .
'DIRS': ['/ rumah / fahmida / django_pro / databaseapp / templat'],
… .
,
]

Model reka bentuk dengan atribut lalai dan nol:

Ubah suai model.py fail dengan skrip berikut untuk membuat jadual bernama produk yang akan mengandungi empat medan tanpa medan id. Ini nama, harga, tarikh_kilang, dan tarikh luput. Nilai bagi batal atribut ditetapkan ke True untuk semua bidang. Nilai yang kosong atribut ditetapkan ke True untuk semua bidang juga. Ini bermaksud pengguna boleh mengosongkan bidang sebelum menghantar borang yang akan menggunakan model ini. The lalai nilai atribut ditetapkan untuk harga, tarikh_kilang, dan tarikh tamat tempoh.

model.py

# Modul model import
dari django.model import db
# Buat kelas untuk menentukan struktur jadual Guru
Produk kelas (model.Model):
nama = model.CharField (max_length = 50, null = True, blank = True)
harga = model.IntegerField (null = True, default = ", blank = True)
tarikh_ pembuatan = model.DateField (null = True, default = '0000-00-00', kosong = Benar)
expire_date = model.DateField (null = True, default = '0000-00-00', kosong = Benar)

Jalankan arahan migrasi berikut untuk membuat fail migrasi yang diperlukan dan jadual pangkalan data pangkalan data SQLite.

$ python3 menguruskan.py makemigrations databaseapp
$ python3 menguruskan.py berhijrah

Penyisipan data menggunakan Papan Pemuka Pentadbiran Django:

Ubah suai kandungan pentadbir.py fail dengan skrip berikut untuk mendaftarkan model dalam pangkalan data.

pentadbir.py
Ubah suai url.py fail dengan skrip berikut untuk menentukan jalan untuk membuka Django Administrative Dashboard.

url.py

# Import modul pentadbir
dari django.admin import contrib
# Modul laluan import
dari django.laluan import url
# Tentukan jalan untuk pelanggan dan pentadbir
urlpatterns = [
jalan ('admin /', pentadbir.tapak.url)
]

Sekarang, jalankan pelayan Django dan pergi ke Papan Pemuka Pentadbiran Django dengan menggunakan URL berikut.

http: // localhist: 8000 / pentadbir

buka borang kemasukan produk dengan mengklik Tambah produk. Sekiranya pengguna menyerahkan borang tanpa memasukkan data, maka output berikut akan muncul di penyemak imbas. Di sini, dua medan tarikh menunjukkan kesilapan kerana nilai lalai bidang tarikh tidak dalam format yang sah.

Output berikut akan muncul setelah menambahkan data tarikh yang sah. Di sini, harga medan kosong kerana menggunakan atribut lalai.

Penyisipan data menggunakan templat:

Cara memasukkan data ke dalam produk jadual menggunakan borang HTML telah ditunjukkan di bahagian ini. Di sini, elemen bentuk akan dihasilkan berdasarkan model yang dibuat sebelumnya.

bentuk.py

# Modul borang import
dari borang import django
# Import model Pelanggan
dari dbapp.model mengimport Produk
# Tentukan kelas untuk borang pelanggan
ProductForm kelas (borang.ModelForm):
kelas Meta:
model = Produk
bidang = '__all__'

Buat fail HTML bernama produk.html di dalam templat folder aplikasi dengan skrip berikut. Data borang akan dikirimkan ketika pengguna akan mengklik pada Jimat butang.

produk.html

Borang Kemasukan Pelanggan



% csrf_token%
borang.sebagai_p

Ubah suai pandangan.py fail dengan skrip berikut untuk memasukkan data ke dalam produk jadual setelah mengesahkan borang. TambahProduk () fungsi didefinisikan dalam skrip untuk memeriksa formulir dikirimkan atau tidak, dan jika formulir dikirimkan, maka ia akan memeriksa data formulir itu valid atau tidak valid. Sekiranya ianya sah() fungsi kembali benar, maka data akan dimasukkan ke dalam produk jadual, dan mesej kejayaan akan dipaparkan di penyemak imbas.

pandangan.py

# Import modul HttpResponse
dari django.http.respon import HttpResponse
# Modul rendering import
dari django.pintasan import pintasan
# Import ProductForm
dari dbapp.borang import ProductForm
# Tentukan fungsi untuk menambah kemasukan produk
def AddProduct (permintaan):
sekiranya diminta.kaedah == "POST":
form = ProductForm (permintaan.POS)
# Sekiranya data borang itu sah atau tidak
sekiranya bentuk.ianya sah():
cuba:
# Simpan data borang ke dalam pangkalan data
bentuk.simpan ()
# Tentukan mesej untuk pengguna
data = ['

Produk ditambahkan.

']
# Kembalikan tindak balas
mengembalikan HttpResponse (data)
kecuali:
lulus
lain:
# Tentukan objek bentuk
bentuk = ProductForm ()
# Tunjukkan borang penyertaan produk
return render (permintaan, 'produk.html ', ' form ': form)

Ubah suai url.py fail dengan skrip berikut untuk menentukan jalan untuk memanggil fungsi pandangan.

url.py

# Import modul pentadbir
dari django.admin import contrib
# Modul laluan import
dari django.laluan import url
# Paparan import
dari paparan import dbapp
# Tentukan jalan untuk pelanggan dan pentadbir
urlpatterns = [
jalan (", pandangan.TambahProduk),
jalan ('admin /', pentadbir.tapak.url)
]

Sekarang, jalankan pelayan Django dan buka URL asas di penyemak imbas.

http: // localhist: 8000 /

Borang berikut akan muncul.

Yang berikut Kesalahan Nilai akan muncul sekiranya pengguna menghantar borang tanpa menambahkan data dalam borang. Di sini, harga medan adalah bilangan bulat yang tidak boleh menjadi tali kosong.

Sekiranya pengguna memasukkan data yang sah seperti borang di bawah dan menekan Jimat butang, rekod produk baru akan dimasukkan ke dalam pangkalan data.

Gambar berikut akan muncul jika anda membuka rakaman yang baru dimasukkan dari Django Dashboard.

Kesimpulan:

Model telah dirancang dengan menggunakan atribut null dan default dalam tutorial ini. Seterusnya, cara memasukkan data dalam bidang ini di bahagian belakang dan bahagian depan ditunjukkan di sini untuk membantu pembaca mengetahui penggunaan atribut lalai dan nol dalam pangkalan data Django.

Aplikasi Pemetaan Gamepad Terbaik untuk Linux
Sekiranya anda suka bermain permainan di Linux dengan gamepad dan bukannya sistem input papan kekunci dan tetikus biasa, ada beberapa aplikasi berguna...
Alat Berguna untuk Pemain Linux
Sekiranya anda suka bermain permainan di Linux, kemungkinan anda telah menggunakan aplikasi dan utiliti seperti Wine, Lutris dan OBS Studio untuk meni...
HD Remastered Games untuk Linux yang Tidak Pernah Melancarkan Linux Sebelumnya
Banyak pembangun dan penerbit permainan hadir dengan penghapus HD permainan lama untuk memperpanjang usia francais, harap peminat meminta keserasian d...