Latest web development tutorials

modèle Django

Django fournit une bonne variété de support de base de données, y compris: PostgreSQL, MySQL, SQLite, Oracle.

Django fournit un système unifié des appels API pour ces bases de données. Nous pouvons choisir autre base de données en fonction de leurs besoins d'affaires.

MySQL est la base de données l'application Web le plus couramment utilisé. Ce chapitre nous MYSQL comme un exemple sont introduits. Vous pouvez le site MySQL tutoriel pour apprendre plus de bases Mysql.


Configuration de base de données

Nous trouvons BASES éléments de configuration dans le fichier settings.py pour le projet, son information sera révisée:

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

Le ci-dessus contient le nom de la base de données, et les informations utilisateur, ce qui correspond aux mêmes paramètres de base de données et l'utilisateur MySQL. Django Selon ce paramètre, la base de données MySQL et l'utilisateur correspondant se connecte.


Définition Modèle

Créer APP

Django prévoit que, si vous souhaitez utiliser le modèle, nous devons créer une application. Nous utilisons la commande suivante pour créer un TestModel l'application:

python manage.py startapp TestModel

La structure des répertoires est la suivante:

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

Nous modifions TestModel fichier / models.py, comme suit:

# models.py
from django.db import models

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

Au-dessus du nom de la classe représente un nom de table de base de données, et a hérité models.Model, classe dans le champ représente les champs de la table de données (nom), le type de données par CharField (équivalent à varchar), DateField (datetime équivalent), max_length les paramètres définis longueur.

Ensuite, trouver INSTALLED_APPS celui-ci dans settings.py comme suit:

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

Exécutez la ligne de commande python manage.py syncdb, voir les lignes de mots «Création de table ...", et votre table de données a été créée.

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

table Composition structure: nom de l'application _ le nom de classe (par exemple: TestModel_test).

Note: Bien que nous ne disposons pas des modèles mis la clé primaire à la table, mais Django ajoute automatiquement un identifiant comme clé primaire.


Opérations de base de données

Ensuite, nous ajoutons le répertoire testdb.py fichier HelloWorld et de modifier urls.py:

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

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

Ajout de données

Ajout de données dont vous avez besoin pour créer un objet, puis exécuter la fonction, l'équivalent de l'INSERT SQL enregistrer:

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

Vous pouvez voir le http://192.168.45.3:8000/testdb/ d'accès aux données ajouter une invite succès.

Obtenir des données

Django fournit plusieurs façons d'obtenir le contenu de la base de données, comme indiqué dans le code suivant:

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

La sortie est représentée ci-dessous:

Mise à jour des données

Vous pouvez modifier les données en utilisant save () ou 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>")

Supprimer les données

Les objets supprimés dans la base de données appellent simplement delete () méthode de l'objet:

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