Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作

简介: Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作

前言

    Django的ORM是Python开发者的利器,它简化了数据库操作,让编码更加高效和直观。本文将带你快速了解ORM的基本概念,指导你创建模型类、执行迁移、利用admin控制台,并探索ORM的视图操作。


一、ORM映射

1.1 ORM映射概念

ORM(object relational mapping) :对象关系映射

ORM映射是双向的:既可以将类映射成表,也可以将表映射成类

1.2 创建编写模型类及迁移步骤

1. 创建模型类,在models.py中创建类
2. 自定义类,需要继承models.Model
3. 自定义属性
4. 需要添加Meta()元类,指定当前类迁移完成后,在数据库表中的名字
5. 执行生成迁移文件的命令:`python manage.py makemigrations`
6. 执行具体迁移操作:`python manage.py migrate`
7. 打开pycharm中Database选项,找到sqlite选项,选择项目中的数据库文件

1.3 模型类编写

通过ORM映射在子应用app下的models.py文件中创建模型类:

#myapp/models.py
from django.db import models
# Create your models here.
class Weather(models.Model):
    weather = models.CharField(max_length=100,verbose_name="天气")
    def __str__(self):
        return self.weather
    class Meta:
        db_table='修改'
        verbose_name_plural = "天气"
        # 设置当前表名的一个可读的性更好的名字

    在这里我们使用到了 django 的ORM映射关系用来创建数据库表,继承自models.Model类,一个类用来表示一张表,类中的一个属性代表一个字段。

  • 当某个子应用APP涉及到了数据库的使用时,要记得在settings文件中进行配置
#myproject/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
]

1.4 生成迁移文件

接下来通过manage.py命令行管理工具提供的两条,创建我们所需要的数据

python manage.py makemigrations # 创建数据库迁移文件

1.5 执行迁移

python manage.py migrate # 根据数据库迁移文件生成对应 SQL 语句并执行

二、admin控制台

2.1 admin控制台概念

admin控制台是 django 为我们提供的一个非常便捷的用来管理数据库的界面,

主路由文件下,它对应的路由设置path('admin/', admin.site.urls)

2.2 admin控制台超级用户

  • 创建admin超级用户,使用manage.py命令行工具执行如下命令并按照提示创建即可
  • python manage.py createsuperuser

登录进入后:

并没有出现迁移后的表,这就要对模型类进行 注册

2.3 admin控制台模型类注册

app下的admin.py文件中进行模型类的注册:

#myapp/admin.py
from django.contrib import admin
from myapp import models
admin.site.register(models.Weather)
#使用 register 函数接收模型类作为参数即可完成注册

注册完成,刷新页面即可看到weather表


三、ORM视图操作

    最后,在视图中进行数据库操作,获取数据库中的数据来渲染到页面上,修改之前所编写的视图,并使用ORM的数据库操作获取数据

3.1 如何通过ORM操作模型类

# myapp/views.py
from django.shortcuts import render
from myapp import models
def index(request):
  #使用**all**方法,获取某表中的所有数据
    weathers = models.Weather.objects.all()
    content = {
        "weathers": weathers,
    }
    return render(request, 'index.html', content)

3.2 模版页面数据渲染ORM操作结果

<!DOCTYPE html>
<html lang="en">
    {% load staticfiles %}
<head>
    <meta charset="UTF-8">
    <title>hi</title>
</head>
<body>
    {% for weather in weathers %}
        <p>{{ weather }}</p>
    {% empty %}
        <p>没有任何天气</p>
    {% endfor %}
</body>
</html>
相关文章
|
1月前
|
SQL 定位技术 数据库
深入探索Django ORM:高效数据库操作的秘诀####
本文旨在为读者揭开Django ORM(对象关系映射)的神秘面纱,通过一系列生动的比喻和详实的案例,深入浅出地讲解其核心概念、工作原理及高级特性。我们将一起探讨如何利用Django ORM简化数据库交互,提升开发效率,同时确保数据的一致性和安全性。不同于传统的技术文档,本文将以故事化的形式,带领读者在轻松愉快的氛围中掌握Django ORM的精髓。 ####
|
2月前
|
SQL 监控 数据库
深入探索Django ORM:高效数据操作的秘诀与实践####
在当今的Web开发领域,提升数据访问层的效率是优化应用性能的关键。本文旨在通过剖析Django框架中的ORM(对象关系映射)机制,揭示其如何简化数据库交互,并探讨一系列高级技巧与策略,帮助开发者构建更高效、可维护的数据访问代码。我们不涉及安装步骤或基础概念,而是聚焦于实战经验分享,旨在为中高级开发者提供深度洞见。 ####
|
2月前
|
Java API 数据库
Django:从入门到精通
【11月更文挑战第18天】Django是一个由Python编写的高级Web应用框架,以其简洁性、安全性和高效性而闻名。Django最初由Adrian Holovaty和Simon Willison于2003年开发,旨在简化Web应用的开发过程。作为一个开放源代码项目,Django迅速吸引了大量的开发者和用户,成为了Python Web开发领域的重要工具之一。
55 1
|
3月前
|
机器学习/深度学习 前端开发 网络架构
Django如何调用机器学习模型进行预测
Django如何调用机器学习模型进行预测
83 5
|
3月前
|
机器学习/深度学习 监控 数据挖掘
基于Django和百度飞桨模型的情感识别Web系统
基于Django和百度飞桨模型的情感识别Web系统
51 5
|
3月前
|
机器学习/深度学习 算法 搜索推荐
django调用矩阵分解推荐算法模型做推荐系统
django调用矩阵分解推荐算法模型做推荐系统
47 4
|
3月前
|
存储 开发框架 JSON
【查漏补缺】Django模型字段类型及其应用
【查漏补缺】Django模型字段类型及其应用
32 0
|
3月前
|
SQL Go 数据库
【速存】深入理解Django ORM:编写高效的数据库查询
【速存】深入理解Django ORM:编写高效的数据库查询
92 0
|
2月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
200 45
|
2月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
72 2