• Django之路第四篇:Models


    概述

    • 通常,一个Model对应数据库的一张数据表

    • Django中Models以类的形式展现

    • 它包含了一些基本字段以及数据的一些行为

    ORM

    • Django使用了对象关系映射-----ORM(Object Relation Mapping)

    • 实现了对象和数据库之间的映射

    • 隐藏了数据访问的细节,不需要编写SQL语句

    编写Models的步骤

    1. 在应用根目录下创建models.py,并引入models模块
    2. 创建类,继承models.Model,该类即是一张数据表
    3. 在类中创建字段

    这里就以blog应用为例,编写blog/models.py文件

    1 # blog/models.py
    2 from __future__ import unicode_literals
    3 from django.db import models
    4 
    5 class Article(models.Model):
    6     title = models.CharField(max_length=32,default='Title')
    7     content = models.TextField(null=True)

    字段创建

    • 字段即类里面的属性(变量)
    • attr = models.CharField(max_length = 64)

    生成数据表

    1.生成数据表步骤

    • 命令行中进入manage.py同级目录
    • 执行python manage.py makemigrations app名(制作数据迁移准备)
    • 再执行python manage.py migrate(数据迁移开始)

    2.查看生成的数据表

    • Django会自动在app/migrations/目录下生成移植文件
    • 执行python manage.py sqlmigrate 应用名 文件id 查看SQL语句
    • 默认sqlite3的数据库在项目根目录下db.sqlite3
    • 推荐下载第三方软件SQLite Expert Personal打开查看db.sqlite3(轻量级,完全免费)

    页面呈现数据

    1.后台步骤

    • 在数据库中先添加数据
    • 在应用中的views.py中添加 import models
    • 使用 article = models.Article.objects.get(pk=1)获取实例模型
    • 然后使用 render(request,page,{'article':article}) 渲染页面

    应用修改过后的views.py

    1 # blog/views.py
    2 from django.shortcuts import render
    3 from . import models
    4 def index(request):
    5     article = models.Article.objects.get(pk=1)
    6     return render(request, 'blog/index.html', {"article":article})

    2.前端步骤

    • 模板可直接使用对象以及对象的“.”操作
    • {{article.title}}

    应用修改过后的index.html

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5      <title>Title</title>
     6  </head>
     7  <body>
     8     <h1>{{ article.title }}</h1>
     9      <h3>{{ article.content }}</h3>
    10  </body>
    11  </html>

    当前的工程目录结构

    myblog

      |-----blog(应用目录)

        |-----migrations(数据移植模块,内容自动生成)

          |------__init__.py

        |-----templates

          |-----blog

            |-----index.html

        |-----__init__.py

        |-----admin.py(应用的后台管理系统配置)

        |-----apps.py(应用的一些配置)

        |-----models.py(数据模块,类似于MVC结构中的Models(模型))

        |-----tests.py(自动化测试模块)

        |-----views.py(执行响应的代码所在模块)

        |-----urls.py(新增路由文件)

      |-----myblog(项目目录)

        |-----__init__.py

        |-----settings.py(项目中的总配置文件)

        |-----urls.py(URL配置文件)

        |-----wsgi.py(Python应用与Web服务器之间的接口)

      |-----db.sqlite3(数据库文件)

      |-----manage.py(与项目进行交互的命令行工具集入口(项目管理器))

  • 相关阅读:
    理解和配置 Linux 下的 OOM Killer
    ARM各种版本号知识以及型号的发展(三星为例)
    GCC 编译使用动态链接库和静态链接库
    insmod module_param 模块参数
    cgic 写CGI程序
    嵌入式应用中CGI编程中POST、GET及环境变量详解
    CGI技术原理
    h264 流、帧结构
    LocalDate、LocalDateTime与timestamp、Date的转换
    Java8中 Date和LocalDateTime的相互转换
  • 原文地址:https://www.cnblogs.com/wanghao123/p/7993611.html
Copyright © 2020-2023  润新知