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(与项目进行交互的命令行工具集入口(项目管理器))

posted @ 2017-12-06 16:54  CodingCoder  阅读(240)  评论(0编辑  收藏  举报