Latest web development tutorials

modelo de Django

Django ofrece una buena variedad de soporte de base de datos, incluyendo: PostgreSQL, MySQL, SQLite, Oracle.

Django proporciona unas llamadas a la API unificada para estas bases de datos. Podemos elegir la base de datos diferente de acuerdo a sus necesidades de negocio.

MySQL es la base de datos de aplicaciones web más utilizada. En este capítulo vamos a MySQL como un ejemplo, se introducen. Puede sitio de MySQL tutorial para aprender más básico de MySQL.


Configuración de la base de datos

Nos encontramos BASES DE DATOS elementos de configuración en el archivo settings.py para el proyecto, su información será revisada como:

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

El anterior contiene el nombre de base de datos, y la información de usuario, que corresponde a la misma base de datos de usuario y de la configuración de MySQL. Django De acuerdo con esta configuración, la base de datos MySQL y el usuario se conecta correspondiente.


definición del modelo

crear APP

Django provee que si desea utilizar el modelo, hay que crear una aplicación. Nosotros usamos el siguiente comando para crear un TestModel la aplicación:

python manage.py startapp TestModel

Estructura de directorio es el siguiente:

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

Modificamos el archivo TestModel / models.py, de la siguiente manera:

# models.py
from django.db import models

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

Por encima del nombre de la clase representa una base de datos de nombres de tabla, y heredó models.Model, clase dentro del campo representa los campos de la tabla de datos (nombre), por tipo de datos CharField (equivalente a varchar), DateField (datetime equivalente), max_length Los parámetros definidos longitud.

A continuación, encontrará INSTALLED_APPS éste en settings.py de la siguiente manera:

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

Ejecutar la línea de comandos python manage.py syncdb, ver las líneas de palabras "Creación de mesa ...", y su tabla de datos ha sido creada.

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

tabla de composición de la estructura: nombre de la aplicación _ el nombre de la clase (por ejemplo: TestModel_test).

Nota: Aunque no tenemos los modelos establecer la clave principal a la tabla, pero Django añade automáticamente un identificador como la clave principal.


Operaciones de base de datos

A continuación añadimos directorio de archivos HelloWorld testdb.py y modificamos urls.py:

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

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

Adición de datos

Adición de datos que necesita para crear un objeto, y luego realizar la función, el equivalente del SQL INSERT ahorrar:

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

Se puede ver el acceso a los datos http://192.168.45.3:8000/testdb/ añadir un éxito del sistema.

Obtener los datos

Django proporciona varias maneras de obtener el contenido de la base de datos, como se muestra en el siguiente código:

# -*- 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 salida se muestra a continuación:

actualización de datos

Puede modificar los datos usando save () o 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>")

eliminar los datos

Los objetos eliminados en la base de datos simplemente llaman método delete () del objeto:

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