model Django
Django menyediakan sokongan yang baik untuk pelbagai pangkalan data, termasuk: PostgreSQL, MySQL, SQLite, Oracle.
Django menyediakan API panggilan bersatu untuk pangkalan data ini. Kita boleh memilih pangkalan data yang berbeza mengikut keperluan perniagaan kita.
MySQL ialah pangkalan data yang paling biasa digunakan dalam aplikasi web. Dalam bab ini kita akan menggunakan Mysql sebagai contoh untuk memperkenalkan. Anda boleh pergi melalui tutorial MySQL di laman web ini Ketahui lebih lanjut tentang asas Mysql.
Konfigurasi pangkalan data
Kami mencari item konfigurasi PANGKALAN DATA dalam fail settings.py projek dan mengubah suai maklumatnya kepada:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', 'USER': 'test', 'PASSWORD': 'test123', 'HOST':'localhost', 'PORT':'3306', } }
Di atas mengandungi pangkalan data nama dan pengguna Maklumat adalah sama dengan pangkalan data dan tetapan pengguna yang sepadan dalam MySQL. Django menyambung ke pangkalan data dan pengguna yang sepadan dalam MySQL berdasarkan tetapan ini.
Tentukan model
Buat APP
Django menetapkan bahawa jika anda ingin menggunakan model, anda mesti mencipta aplikasi. Kami menggunakan arahan berikut untuk mencipta aplikasi TestModel:
python manage.py startapp TestModel
Struktur direktori adalah seperti berikut:
HelloWorld |-- TestModel | |-- __init__.py | |-- admin.py | |-- models.py | |-- tests.py | `-- views.py
Kami mengubah suai fail TestModel/models.py dengan kod berikut:
# models.py from django.db import models class Test(models.Model): name = models.CharField(max_length=20)
Kelas di atas Nama mewakili nama jadual pangkalan data dan mewarisi model.Model dalam kelas mewakili medan (nama) dalam jadual data termasuk CharField (bersamaan dengan varchar) dan DateField (bersamaan dengan. tarikh masa). Parameter max_length mengehadkan panjang.
Seterusnya, cari item INSTALLED_APPS dalam settings.py, seperti berikut:
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'TestModel', # 添加此项 )
Jalankan python manage.py syncdb pada baris arahan dan lihat beberapa baris "Mencipta jadual..." , jadual data anda telah dibuat.
Creating tables ... …… Creating table TestModel_test #我们自定义的表 ……
Struktur nama jadual ialah: nama app name_class (seperti: TestModel_test).
Nota: Walaupun kami tidak menetapkan kunci utama untuk jadual dalam model, Django akan secara automatik menambah id sebagai kunci utama.
Kendalian pangkalan data
Seterusnya kami menambah fail testdb.py dalam direktori HelloWorld dan mengubah suai urls.py:
from django.conf.urls import * from HelloWorld.view import hello from HelloWorld.testdb import testdb urlpatterns = patterns("", ('^hello/$', hello), ('^testdb/$', testdb), )
Tambah data
Untuk menambah data, anda perlu mencipta objek dahulu, dan kemudian laksanakan fungsi simpan, yang bersamaan dengan INSERT dalam SQL:
# -*- coding: utf-8 -*- from django.http import HttpResponse from TestModel.models import Test # 数据库操作 def testdb(request): test1 = Test(name='w3cschool.cc') test1.save() return HttpResponse("<p>数据添加成功!</p>")
Lawati http://192.168.45.3:8000/testdb/ dan anda boleh lihat gesaan bahawa data telah berjaya ditambahkan .
Dapatkan data
Django menyediakan pelbagai cara untuk mendapatkan kandungan pangkalan data, seperti yang ditunjukkan dalam kod berikut:
# -*- coding: utf-8 -*- from django.http import HttpResponse from TestModel.models import Test # 数据库操作 def testdb(request): # 初始化 response = "" response1 = "" # 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM list = Test.objects.all() # filter相当于SQL中的WHERE,可设置条件过滤结果 response2 = Test.objects.filter(id=1) # 获取单个对象 response3 = Test.objects.get(id=1) # 限制返回的数据 相当于 SQL 中的 OFFSET 0 LIMIT 2; Test.objects.order_by('name')[0:2] #数据排序 Test.objects.order_by("id") # 上面的方法可以连锁使用 Test.objects.filter(name="w3cschool.cc").order_by("id") # 输出所有数据 for var in list: response1 += var.name + " " response = response1 return HttpResponse("<p>" + response + "</p>")
Hasil output adalah seperti yang ditunjukkan di bawah:
Kemas kini data
Untuk mengubah suai data, anda boleh menggunakan save() atau update():
# -*- coding: utf-8 -*- from django.http import HttpResponse from TestModel.models import Test # 数据库操作 def testdb(request): # 修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE test1 = Test.objects.get(id=1) test1.name = 'w3cschoolphp中文网' test1.save() # 另外一种方式 #Test.objects.filter(id=1).update(name='w3cschoolphp中文网') # 修改所有的列 # Test.objects.all().update(name='w3cschoolphp中文网') return HttpResponse("<p>修改成功</p>")
Padam data
Untuk memadamkan objek dalam pangkalan data, hanya panggil kaedah Just delete() objek:
# -*- coding: utf-8 -*- from django.http import HttpResponse from TestModel.models import Test # 数据库操作 def testdb(request): # 删除id=1的数据 test1 = Test.objects.get(id=1) test1.delete() # 另外一种方式 # Test.objects.filter(id=1).delete() # 删除所有数据 # Test.objects.all().delete() return HttpResponse("<p>删除成功</p>")