欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Django-模型

程序员文章站 2022-07-01 08:22:29
...

视图:处理主观逻辑,返回响应结果,常与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)