首页 > 其他分享 >模型层

模型层

时间:2022-11-19 14:16:27浏览次数:57  
标签:models 模型 py django myapp contrib 数据库

项目的模型

连接MySQL数据库设置

默认情况下,配置使用SQLite。若不使用SQLite作为数据库,则需要额外的设置,例如 USER,PASSWORD和HOST必须加入。

其中ENGINE设置为数据库后端使用。内置数据库后端有:

  • 'django.db.backends.postgresql'
  • 'django.db.backends.mysql'
  • 'django.db.backends.sqlite3'
  • 'django.db.backends.oracle'
在myweb/settings.py文件中,通过DATABASES项进行数据库设置

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

注意:Django使用MySQL数据库需要加载 MySQLdb模块,需要安装 mysqlclient,若已经安装请略过。 (Django2.2版本之前我们安装的是pymysql模块,不过现在使用的mysqlclient )

 $ pip install mysqlclient

创建模型实例-简单使用

创建模型

在我们的简单的应用程序中,去创建一个stu表信息操作的Model类。
编辑 myapp/models.py文件

from django.db import models
	# Create your models here.
	class Stu(models.Model):
    '''自定义Stu表对应的Model类'''
    #定义属性:默认主键自增id字段可不写
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=16)
    age = models.SmallIntegerField()
    sex = models.CharField(max_length=1)
    classid=models.CharField(max_length=8)
	
	 # 定义默认输出格式
    def __str__(self):
			return "%d:%s:%d:%s:%s"%(self.id,self.name,self.age,self.sex,self.classid)
	
	
	
	# 自定义对应的表名,默认表名:myapp_stu
    class Meta:
        db_table="stu"

数据迁移

数据迁移

Django框架中有一个非常强大的应用功能--自动管理界面,常被Web平台管理者使用,去管理整个Web平台。

默认情况下,在settings.py配置文件中INSTALLED_APPS包含以下应用程序,这些应用程序都是由Django提供:

  • django.contrib.admin - 管理网站。你会很快使用它。
  • django.contrib.auth - 认证系统。
  • django.contrib.contenttypes - 内容类型的框架。
  • django.contrib.sessions - 会话框架
  • django.contrib.messages - 消息框架。
  • django.contrib.staticfiles - 管理静态文件的框架。

为了后续的开发,默认这些应用程序都是包含在里面的。

使用这些Django自带的应用程序,需要我们在数据库中创建一些数据表对应,然后才能使用它们。为此,请运行以下命令(数据结构迁移):

$ python manage.py migrate

其中该migrate命令查看该INSTALLED_APPS设置,并根据myweb/settings.py文件中的数据库设置和应用程序随附的数据库迁移创建任何必需的数据库表(稍后将介绍)。您会看到适用于每个迁移的消息

迁移是非常强大的功能,它能让你在开发过程中持续的改变数据库结构而不需要重新删除和创建表 - 它专注于使数据库平滑升级而不会丢失数据。我们会在后面的教程中更加深入的学习这部分内容,现在,你只需要记住,改变模型需要这三步:

  • 编辑 models.py 文件,改变模型。
  • 运行 python manage.py makemigrations 为模型的改变生成迁移文件。 转跳地址
  • 运行 python manage.py migrate 来应用数据库迁移。转跳地址

数据库迁移被分解成生成和应用两个命令是为了让你能够在代码控制系统上提交迁移数据并使其能在多个应用里使用;这不仅仅会让开发更加简单,也给别的开发者和生产环境中的使用带来方便。

设置时区和语言:

编辑myweb/settings.py配置文件:
 ## LANGUAGE_CODE = 'zh-hans'

## TIME_ZONE = 'Asia/Shanghai'

将我们自定义的应用程序的加入到后台管理

但我们的自定义应用程序在哪里?并没有显示在后台管理索引页面上。

要做到这一点,打开myapp/admin.py 文件,并编辑代码如下:

 - From django.contrib     impor     tadmin
- From myapp.models import Stu
- admin.site.register(Stu)

激活模型

要将该应用程序包括在我们的项目中,我们需要在设置中添加对其配置类的引用INSTALLED_APPS。

该 myappConfig班是在myapp/apps.py文件中,所以它的虚线路径'myapp.apps.myappConfig'。

编辑myweb/settings.py文件,并将该虚线路径添加到该INSTALLED_APPS设置。

INSTALLED_APPS = [   
'django.contrib.admin',   
'django.contrib.auth',   'django.contrib.contenttypes',   'django.contrib.sessions',   'django.contrib.messages',   'django.contrib.staticfiles',   'myapp.apps.MyappConfig', #或者直接写 myapp]

使用(两种)

① 现在进入交互式的Python shell,并使用Django提供的免费API

C:\Users\张涛\Desktop\code\myweb>python manage.py shell Python 3.8.2(tags/v3.8.2:7b3ab59, Feb 252020, 22:45:29) [MSC v.191632bit (Intel)] on win32 Type "help", "copyright", "credits"or"license"formore information. (InteractiveConsole) >>> frommyapp.models importStu
>>> mod = Stu.objects # 获取所有信息>>> lists = mod.all() >>> forv inlists: ... print(v) ... 1:zhangsan:22:m:python03 2:lisi:25:w:python04 3:wangwu:20:m:python03 4:zhaoliu:19:w:python04 5:qq01:20:m:python03 6:qq02:21:w:python04 7:qq03:20:m:python05 8:uu01:21:w:python04 9:uu02:20:m:python05 10:aa:29:w:python03 11:bb:20:m:python04
# 获取单条信息>>> mod.get(id=1) <Stu: 1:zhangsan:22:m:python03> >>> mod.get(id=2) <Stu: 2:lisi:25:w:python04> >>> mod.get(id=3) <Stu: 3:wangwu:20:m:python03>
>>>

② 在myapp应用的视图中使用

# 文件:myapp/views.py 文件代码
From django.shortcuts import render From django.http import HttpResponse From myapp.models import Stu
 
 
# Create your views here.defindex(request):
returnHttpResponse("Hello Django!")
defstu(request):#获取所有stu表信息
lists = Stu.objects.all() print(lists) #获取单条学生信息print(Stu.objects.get(id=1))
Return HttpResponse("ok")
 
  • 配置stu函数的访问路由
#在myapp/urls.py文件中配置path('stu/', views.stu),

标签:models,模型,py,django,myapp,contrib,数据库
From: https://www.cnblogs.com/xiaofubase/p/16906005.html

相关文章