初识Django的模型层

目录

目录

前言

一.模型层是什么

二.为什么需要模型层

三.创建博客文章模型

四.初识Django Shell 

五.初识Django Admin

六.实现博客数据返回页面


前言

通过前面的Django学习,我们了解了Django采用了MVT的软件模式,下面我们来学习Django的模型层。

一.模型层是什么

在我们的网站开发里,总是不可避免的需要结合视图和数据来进行开发。因此模型层位于视图层和数据库之间,将python对象转化成数据库表,并且将python的数据库表里面的记录转化成python的对象数据进行返回。

初识Django的模型层_第1张图片

二.为什么需要模型层

1. 在开发过程中有不同的数据库, 如MySQL,SQLite,Oracle....这些数据库之间各有不同,模型层可以屏蔽同数据库之间的差异,使得开发者更加专注于业务逻辑的开发.

初识Django的模型层_第2张图片

 2.提供更多的便捷工具有助于开发,比如说,数据库迁移,数据库数据备份.如果说没有模型层的话,会直接对数据库进行操作,但是有了模型层我们可以利用提供的工具进行对数据库的一些操作,更加的便捷.

三.创建博客文章模型

通过前面对模型层的学习,下面我们进行模型层的实际操作,进行博客文章的创建。

首先,我们认识一下数据库的常用类型和属性

数字类型:integerFidle       文本类型:TextField      日期类型:DateTimeField
自增ID: AutoField             主键定义:primary_key

 在应用下的model.py文件下创建模型,代码如下:

from django.db import models

# Create your models here.
class Title(models.Model):
    # 文章id
    title_id = models.AutoField(primary_key=True)
    # 文章标题
    title_name = models.TextField()
    # 文章内容
    title_content = models.TextField()
    # 文章摘要
    title_content1 = models.TextField()
    # 发布日期
    publish_date = models.DateTimeField(auto_now=True)
    # auto_now=True 不设置日期时间的时候,默认为当前日期时间
    def __str__(self):
        return self.title_name

在本地运行 python manage.py makemigrations进行数据库模型迁移,然后通过python manage.py migrate运行迁移文件同步到数据库。

四.初识Django Shell 

Django Shell可以测试模型是否可以使用,方便开发,调试,Debug,继承了Django的项目环境。

在控制台进行操作,代码如下:

python manage.py shell # 进入shell环境
from mookapp.models import Title
a=Title()
a.title_name = '这是Django Shell测试'  # 写入内容
a.save()  # 保存到数据库
titles = Title.objects.all()
title = titles[0]  # 可以通过索引获取第一篇文章
print(titles.title_name)

五.初识Django Admin

Django Shell用来添加小量的数据简单,但是数据多的时候就会显得比较复杂,这是后我们可以用Django Admin来进行添加,还可以对页面进行管理。主要功能:认证用户,显示管理模型,校验输入。

在控制台输入python manage.py createsuperuser 设置完用户名和密码后,运行工程文件,然后再浏览器输入http://127.0.0.1:8000/admin

初识Django的模型层_第3张图片

然后进入应用下的admin.py文件,输入以下代码进行连接数据库:

from .models import Title
admin.site.register(Title)

重新运行进入管理界面

初识Django的模型层_第4张图片

六.实现博客数据返回页面

 通过以上的学习,我们可以完成一个小项目,将数据返回到页面进行展示.

在应用下的views.py文件输入以下代码:

def title_concent(request):
    atitle = Title.objects.all()[0]
    title_id = atitle.title_id
    title_name = atitle.title_name
    title_count = atitle.title_count
    publish_date = atitle.publish_date
    return HttpResponse("title_id: %s, title_name: %s,"
                        " title_count: %s, publish_date: %s"
                        % (title_id, title_name, title_count, publish_date))

 然后通过对项目路由和应用路由的配置进行展示

项目路由

urlpatterns = [
    path('admin/', admin.site.urls),
    path('mook/', include('mookapp.urls'))
]

应用路由

urlpatterns = [
    path('mookapp', mookapp.views.title_concent)
]

最后在浏览器输入http://127.0.0.1:8000/mook/mookapp

展示结果如下图: 

你可能感兴趣的:(django,python,后端)