Latest web development tutorials

نموذج جانغو

جانغو يوفر مجموعة جيدة من دعم قاعدة البيانات، بما في ذلك: الإنترنت، MySQL، سكليتي، أوراكل.

يوفر جانغو دعوات API موحدة لقواعد البيانات هذه. نستطيع أن نختار قاعدة بيانات مختلفة وفقا لاحتياجات أعمالهم.

الخلية هي الأكثر استخداما قاعدة بيانات تطبيق ويب. وقدم هذا الفصل سنقوم الخلية كمثال على ذلك. يمكنك موقع ماي البرنامج التعليمي لمعرفة المزيد من أساسيات الخلية.


تكوين قاعدة بيانات

نجد DATABASES عناصر التكوين في ملف settings.py للمشروع، وسيتم تنقيح المعلومات الخاصة به على النحو التالي:

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

ويحتوي فوق اسم قاعدة البيانات، ومعلومات المستخدم، والتي تتطابق مع نفس قاعدة البيانات وإعدادات المستخدم ماي. جانغو ووفقا لهذا الإعداد، وقاعدة بيانات MySQL و المستخدم المقابل يربط.


تعريف نموذج

إنشاء APP

يوفر جانغو أنه إذا كنت ترغب في استخدام هذا النموذج، يجب علينا تهيئة التطبيق. نحن نستخدم الأمر التالي لإنشاء TestModel التطبيق:

python manage.py startapp TestModel

بنية الدليل على النحو التالي:

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

نحن تعديل TestModel / ملف models.py، على النحو التالي:

# models.py
from django.db import models

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

فوق اسم الفئة تمثل أسماء جدول قاعدة البيانات، ورثت models.Model، والطبقة داخل الحقل تمثل حقول الجدول البيانات (الاسم)، نوع البيانات التي CharField (أي ما يعادل VARCHAR)، DateField (التاريخ والوقت ما يعادلها)، MAX_LENGTH معايير محددة المدة.

بعد ذلك، تجد INSTALLED_APPS هذا واحد في settings.py على النحو التالي:

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

تشغيل سطر الأوامر الثعبان manage.py syncdb، راجع خطوط كلمة "إنشاء الجدول ..."، ولقد تم إنشاء جدول البيانات.

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

الجدول تكوين هيكل: اسم التطبيق _ اسم الفئة (على سبيل المثال: TestModel_test).

ملاحظة: على الرغم من أننا لم يكن لديك نماذج وضعت المفتاح الأساسي للجدول، ولكن جانغو يضيف معرف تلقائيا كمفتاح أساسي.


عمليات قاعدة البيانات

التالي نضيف testdb.py دليل ملف HelloWorld وتعديل urls.py:

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

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

إضافة بيانات

إضافة البيانات التي تحتاجها لإنشاء كائن، ثم قم بإجراء وظيفة حفظ، أي ما يعادل INSERT 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>")

تستطيع أن ترى في http://192.168.45.3:8000/testdb/ الوصول إلى البيانات إضافة النجاح الفوري.

الحصول على البيانات

يوفر جانغو عدة طرق للحصول على محتويات قاعدة البيانات، كما هو موضح في التعليمات البرمجية التالية:

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

هو مبين أدناه إخراج:

تحديث البيانات

يمكنك تعديل البيانات باستخدام إنقاذي () أو التحديث ():

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

حذف البيانات

الكائنات المحذوفة في قاعدة بيانات تدعو ببساطة طريقة الكائن حذف ():

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