Django-模型
视图:处理主观逻辑,返回响应结果,常与DB交互(前段页面用漂亮的格式显示)
数据库驱动站点
Django鼓励松耦合即对不同部分的严格分割,通过模板可以做到业务逻辑和表现逻辑分隔
软件架构的模式
MVC:抽象数据存取方式,单独一层显示数据,中间控制
MTV:模型,模板,M与T之间的桥梁
数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'books.sqlite3'),
}
}
应用程序:是代码,一套Django功能的合集,Django还内建了一些app(注释和管理)
如果要使用模型,必须建立app
project:是建立配置文件
创建app:python manage.py startapp appname
模型
many-to-many
one-to-many
foreign key
每一个数据库表对应一个类,Django自动设置主键,自动增长
模型安装(**):
#加入books app
INSTALLED_APPS = [
'books.apps.BooksConfig'
]
让模型生效:manage.py makemigrations books
将模型应用至DB:manage.py migrate
基本数据的访问
python manage.py shell :在shell中进行访问
导入模型类的实例
创建类实例,并设置字段值
save()
类.objects.get() 取出信息
类.objects.all()
如果需一步对象的创建与存储至数据库
类.objects.create()
- 添加模块字符串的表现
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
def __str__(self):
return u'%s%s'%(self.name,self.address)
#告诉python如何将对象以Unicode的方式显示
- 插入和更新
- 选择对象
- 限制返回的数据
- 排除符合条件的数据
- 连锁查询
- 对指定模型的缺省查询
设置与特定模型相关的选项
class Publisher(models.Model):
name = models.CharField(max_length=30)
class Mate:
ordering=['name']
- 删除符合条件的结果
- QuerySet可迭代
详细的QuerySet参见:https://code.ziqiangxuetang.com/django/django-queryset-api.html
补充
在模型中使用imageField,需要安装pillow
在setting中添加上传文件路径
#setting
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
#urls中
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
上一篇: GBase 8s基本数据类型
下一篇: 2021-01-25