Latest web development tutorials

Django Modell

Django bietet eine gute Auswahl an Datenbankunterstützung, einschließlich: PostgreSQL, MySQL, SQLite, Oracle.

Django bietet eine einheitliche API-Aufrufe für diese Datenbanken. Wir können je nach ihren geschäftlichen Anforderungen unterschiedliche Datenbank wählen.

MySQL ist die am häufigsten verwendete Web-Anwendung Datenbank. In diesem Kapitel werden wir als Beispiel mySQL wird vorgestellt. Sie können Website MySQL Tutorial mehr Mysql Grundlagen zu erlernen.


Datenbankkonfiguration

Wir finden DATABASES Konfigurationselemente in settings.py Datei für das Projekt, wird seine Informationen revidiert werden:

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

Die oben enthält den Namen der Datenbank und Benutzerinformationen, die auf die gleichen MySQL-Datenbank und Benutzereinstellungen entspricht. Django Gemäß dieser Einstellung, die MySQL-Datenbank und die entsprechenden Benutzer verbindet.


Definition Model

erstellen APP

Django sieht vor, dass, wenn Sie das Modell nutzen möchten, wir eine App erstellen müssen. Wir verwenden den folgenden Befehl ein TestModel die App zu erstellen:

python manage.py startapp TestModel

Verzeichnisstruktur ist wie folgt:

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

Wir ändern TestModel / models.py Datei wie folgt:

# models.py
from django.db import models

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

Oberhalb der Klassenname einer Datenbanktabelle Namen repräsentiert, und erbte models.Model, Klasse innerhalb des Feldes stellt die Daten Tabellenfelder (Name), den Datentyp von CharField (äquivalent zu varchar), Datefield (entspricht datetime), max_length Parameter definierte Länge.

Als nächstes INSTALLED_APPS diese in settings.py finden wie folgt:

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

Führen Sie das Python manage.py syncdb Befehlszeile finden Sie die Wortleitungen "Erstellen Tabelle ...", und Ihre Datentabelle erstellt wurde.

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

Zusammensetzung Tabellenstruktur: App-Name _ der Klassenname (zB: TestModel_test).

Hinweis: Auch wenn wir auf die Tabelle den Primärschlüssel nicht die Modelle, aber Django fügt automatisch eine ID als Primärschlüssel.


Datenbank-Operationen

Als nächstes fügen wir testdb.py Verzeichnisdatei Hello World und ändern urls.py:

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

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

Hinzufügen von Daten

Hinzufügen von Daten müssen Sie ein Objekt erstellen, und führen Sie dann die Funktion zu speichern, das Äquivalent der 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>")

Sie können die Datenzugriffs http://192.168.45.3:8000/testdb/ sehen einen schnellen Erfolg hinzuzufügen.

Erhalten Sie Daten

Django bietet verschiedene Möglichkeiten, um den Inhalt der Datenbank zu erhalten, wie in den folgenden Code dargestellt:

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

Der Ausgang ist unten dargestellt:

Daten aktualisieren

Sie können die Daten mit save () oder Update () zu ändern:

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

Daten löschen

Gelöschte Objekte in der Datenbank rufen Sie einfach die Methode delete () des Objekts:

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