Modèle Django
Django fournit un bon support pour diverses bases de données, notamment : PostgreSQL, MySQL, SQLite, Oracle.
Django fournit une API d'appel unifiée pour ces bases de données. Nous pouvons choisir différentes bases de données en fonction de nos besoins commerciaux.
MySQL est la base de données la plus couramment utilisée dans les applications Web. Dans ce chapitre, nous utiliserons Mysql comme exemple pour présenter. Vous pouvez consulter le tutoriel MySQL sur ce site Apprenez-en davantage sur les bases de Mysql.
Configuration de la base de données
Nous retrouvons l'élément de configuration DATABASES dans le fichier settings.py du projet et modifions ses informations en :
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', 'USER': 'test', 'PASSWORD': 'test123', 'HOST':'localhost', 'PORT':'3306', } }
Ce qui précède contient la base de données nom et utilisateur Les informations sont les mêmes que celles de la base de données correspondante et des paramètres utilisateur dans MySQL. Django se connecte à la base de données et à l'utilisateur correspondant dans MySQL en fonction de ce paramètre.
Définir le modèle
Créer une application
Django stipule que si vous souhaitez utiliser un modèle, vous devez créer une application. Nous utilisons la commande suivante pour créer une application TestModel :
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 le fichier TestModel/models.py avec le code suivant :
# models.py from django.db import models class Test(models.Model): name = models.CharField(max_length=20)
La classe ci-dessus Le nom représente le nom de la table de base de données et hérite de models.Model. Les champs de la classe représentent les champs (nom) de la table de données. Les types de données incluent CharField (équivalent à varchar) et DateField (équivalent à. dateheure). Le paramètre max_length limite la longueur.
Ensuite, recherchez l'élément INSTALLED_APPS 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 python manage.py syncdb sur la ligne de commande et voyez quelques lignes de "Création d'une table..." , votre table de données est créée.
Creating tables ... …… Creating table TestModel_test #我们自定义的表 ……
La structure du nom de la table est : nom de l'application_nom de la classe (tel que : TestModel_test).
Remarque : Bien que nous ne définissions pas de clé primaire pour la table dans les modèles, Django ajoutera automatiquement un identifiant comme clé primaire.
Opération de base de données
Ensuite, nous ajoutons le fichier testdb.py dans le répertoire HelloWorld et modifions urls.py :
from django.conf.urls import * from HelloWorld.view import hello from HelloWorld.testdb import testdb urlpatterns = patterns("", ('^hello/$', hello), ('^testdb/$', testdb), )
Ajouter des données
Pour ajouter des données, vous devez d'abord créer un objet, puis exécuter la fonction de sauvegarde, qui équivaut à INSERT en 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>")
Visitez http://192.168.45.3:8000/testdb/ et vous pourrez voyez l'invite indiquant que les données ont été ajoutées avec succès.
Obtenir des données
Django propose diverses 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>")
Le résultat de sortie est le suivant :

Mettre à jour les données
Pour modifier les données, vous pouvez utiliser 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 = 'w3cschoolphp中文网' test1.save() # 另外一种方式 #Test.objects.filter(id=1).update(name='w3cschoolphp中文网') # 修改所有的列 # Test.objects.all().update(name='w3cschoolphp中文网') return HttpResponse("<p>修改成功</p>")
Supprimer les données
Pour supprimer un objet dans la base de données, appelez simplement la méthode Just delete() 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>")