首先来创建我们这一节的项目,在终端下执行django-admin startproject django_0050,项目结构如下
一、创建模型
在外层django_0050目录下执行python manage.py startapp student,执行后项目的结构如下
修改models.py内容如下
把student模型添加到项目需要修改settings.py文件如下
更改数据库配置需要修改settings.py文件如下
此时还要在本机MySQL数据库上执行create database django_0050创建一个相应的库。执行python manage.py makemigrations student会看到如下输出
然后执行python manage.py migrate,会看到如下输出
此时在MySQL客户端上查看django_0050库,发现库中多了一个名为student_student的表,用desc查看表的结构如下
为student_student表添加两条如下数据
二、为模型添加视图
为student模型添加视图函数,修改student文件夹下的views.py文件如下
为视图函数添加所需要的html模板,在student文件夹下创建templates文件夹,并在其中创建search_form.html文件,内容如下
创建search_result.html文件,内容如下
为视图添加对应的url
运行开发服务器,访问结果如下
如果查询的名字不在数据库中,则会有如下提示
三、模型数据对象操作方法
# 模型Student
from django.db import models
class Student(models.Model):
name = models.CharField(max_length = 30)
age = models.IntegerField()
def __unicode__(self):
return self.name
# 设定用于默认排序的字段
class Meta:
ordering = ['name']
1、创建数据并保存
s = Student(name = "Jack", age = 18)
s.save()
2、获取模型的数据类表
Student.objects.all()
3、数据过滤
Student.objects.filter(name = "Jack", age = 21)
Student.objects.filter(name__contains = "ac") # 查找name包含"ac"的数据,类似的还有startwith、endswith、range
4、获取单个对象
try:
s = Student.objects.get(name = "Jack")
except Student.MultipleObjectsReturned:
print "返回多个结果异常"
try:
s = Student.objects.get(name = "Jack")
except Student.DoesNotExist:
print "查询没有返回结果异常"
5、数据排序
Student.objects.order_by("name") # 按name排序
Student.objects.order_by("name", "age") # 按name、age排序
Student.objects.order_by("-name") # 按name逆向排序
6、连锁查询
Student.objects.filter(name = "Jack").order_by("-age")
7、限制返回的数据
Student.objects.order_by("name")[0] # 返回第一个数据
Student.objects.order_by("name")[0:2] # 返回特定子集
8、更新多个对象
Student.objects.filter(age = 22).update(name = "Tom")
9、删除数据
Student.objects.filter(name = "Jack").delete()