定义模型
-
cd 到Helloworld/Helloworld文件目录下,输入
django-admin startapp NewModel
于是生成了与Helloworld同级的NewModel文件夹,内有models.py文件可以生成表。 -
在settings.py文件下找到INSTALLED_APPS项,添加:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'NewModel', #添加此项
]
生成表
Helloworld/NewModel/models.py
-
类名代表了数据库表的名字
-
name,age是表中的字段
-
CharField相当于varchar;DateField相当于datetime;max_length参数限定长度
-
此时,会默认新增字段id为主键
-
如果需自己建立主键的,比如name是主键,代码改写成
name = models.CharField(max_length=20,primary_key=True)
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=20)
age = models.IntegerField()
在mysql中创建表结构
- cd 到Helloworld/Helloworld文件目录下,输入
python manage.py makemigrations NewModel
让django知道我们在模型上有变更 python manage.py migrate
创建表结构- 此时打开navicat可以看到test下有表结构如下:表名为(应用名_类名)
数据库操作
- 在urls.py文件下添加urlpatterns路径,和以前一样
- 在Helloworld/Helloworld文件目录下新建一个testdb.py的文件,内容如下:
- 增
from django.http import HttpResponse
from NewModel.models import Person
def testdbadd(request):
person1 = Person(name="AB",age=100)
person1.save()
return HttpResponse("添加成功")
- 删
from django.http import HttpResponse
from NewModel.models import Person
def testdbdel(request):
person1 = Person.objects.get(id=1)
person1.delete()
return HttpResponse("删除成功")
- 改
from django.http import HttpResponse
from NewModel.models import Person
def testdbdel(request):
person1 = Person.objects.get(id=1)
person1.name = "abc"
person1.save()
#or Person.objects.get(id=1).update(name="abc")
return HttpResponse("修改成功")
- 查
from django.http import HttpResponse
from NewModel.models import Person
def testdbdel(request):
person1 = Person.objects.get(id=1)
#or person1 = Person.objects.filter(id=1)
#or person1 = Person.objects.all()
return HttpResponse("查询出用户名为:"+person1.name)
filter()相当于是where,可获得一组对象;get()得到的是单个对象,因此我觉得,get()的参数应该只能取主键,否则会报错
from django.http import HttpResponse
from NewModel.models import Person
def testdbdel(request):
person1 = Person.objects.filter(id=1)
return HttpResponse("查询出用户名为:"+person1[0].name)