Latest web development tutorials

Model Django

Django menyediakan berbagai baik dukungan database, termasuk: PostgreSQL, MySQL, SQLite, Oracle.

Django menyediakan panggilan API terpadu untuk database ini. Kita bisa memilih database yang berbeda sesuai dengan kebutuhan bisnis mereka.

MySQL adalah yang paling umum digunakan aplikasi database Web. bab ini kita akan MySQL sebagai contoh diperkenalkan. Anda dapat situs MySQL tutorial untuk mempelajari lebih lanjut Mysql dasar-dasar.


Konfigurasi database

Kami menemukan DATABASES item konfigurasi dalam file settings.py untuk proyek, informasi yang akan direvisi sebagai:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'USER': 'test',
        'PASSWORD': 'test123',
        'HOST':'localhost',
        'PORT':'3306',
    }
}

Diatas nama database, dan informasi pengguna, yang sesuai dengan database dan pengaturan pengguna MySQL yang sama. Django Menurut pengaturan ini, database MySQL dan sesuai pengguna menghubungkan.


Model definisi

Buat APP

Django menyediakan bahwa jika Anda ingin menggunakan model, kita harus membuat sebuah aplikasi. Kami menggunakan perintah berikut untuk membuat TestModel sebuah aplikasi:

python manage.py startapp TestModel

struktur direktori adalah sebagai berikut:

HelloWorld
|-- TestModel
|   |-- __init__.py
|   |-- admin.py
|   |-- models.py
|   |-- tests.py
|   `-- views.py

Kami memodifikasi TestModel / models.py berkas, sebagai berikut:

# models.py
from django.db import models

class Test(models.Model):
    name = models.CharField(max_length=20)

Atas nama kelas merupakan nama tabel database, dan mewarisi models.Model, kelas dalam lapangan merupakan bidang tabel data (nama), jenis data dengan CharField (setara dengan varchar), DateField (setara datetime), max_length parameter yang didefinisikan panjang.

Berikutnya, cari INSTALLED_APPS satu ini di settings.py sebagai berikut:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'TestModel',               # 添加此项
)

Menjalankan baris perintah python manage.py syncdb, melihat garis kata "Membuat tabel ...", dan tabel data Anda telah dibuat.

Creating tables ...
……
Creating table TestModel_test  #我们自定义的表
……

Tabel Komposisi struktur: nama aplikasi _ nama kelas (misalnya: TestModel_test).

Catatan: Meskipun kita tidak memiliki model mengatur kunci utama untuk meja, tapi Django otomatis menambahkan id sebagai kunci utama.


Operasi database

Berikutnya kita tambahkan direktori file HelloWorld testdb.py dan memodifikasi urls.py:

from django.conf.urls import *
from HelloWorld.view import hello
from HelloWorld.testdb import testdb

urlpatterns = patterns("",
        ('^hello/$', hello),
        ('^testdb/$', testdb),
)

menambahkan data

Menambahkan data yang Anda butuhkan untuk membuat sebuah objek, dan kemudian melakukan save fungsi, setara dengan SQL INSERT:

# -*- 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>")

Anda dapat melihat akses data http://192.168.45.3:8000/testdb/ menambahkan keberhasilan prompt.

mendapatkan data

Django menyediakan beberapa cara untuk mendapatkan isi dari database, seperti yang ditunjukkan pada kode 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>")

output ditunjukkan di bawah ini:

Update data

Anda dapat memodifikasi data 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 = 'w3cschool本教程'
	test1.save()
	
	# 另外一种方式
	#Test.objects.filter(id=1).update(name='w3cschool本教程')
	
	# 修改所有的列
	# Test.objects.all().update(name='w3cschool本教程')
	
	return HttpResponse("<p>修改成功</p>")

Hapus Data

objek dihapus dalam database hanya memanggil delete metode 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>")