python的django框架从入门到熟练【保姆式教学】第二篇

news/2024/11/26 4:15:03/

在上一篇博客中,我们介绍了Django的基础知识,并创建了一个简单的Web应用程序。在本篇教程中,我们将深入探讨Django的模型层(Model),它是Django应用程序的核心组件之一。

模型层

Django的模型层是一个对象关系映射(ORM)框架,它提供了一种简单而强大的方式来管理应用程序中的数据。它将数据库表映射到Python类,并提供了一组API来管理这些类的实例。

在Django中,每个模型都是一个Python类,它继承自“django.db.models.Model”类。这个类定义了模型的字段和行为。在模型中定义的字段将被转换为数据库表的列,而模型中定义的方法将被转换为对这些列的操作。

创建模型

让我们创建一个简单的模型来存储博客文章。在“myapp/models.py”文件中添加以下代码:

from django.db import modelsclass BlogPost(models.Model):title = models.CharField(max_length=200)content = models.TextField()pub_date = models.DateTimeField(auto_now_add=True)

这个模型定义了一个名为“BlogPost”的类,它有三个字段:标题(title)、内容(content)和发布日期(pub_date)。在这个模型中,“title”和“content”字段分别被定义为“CharField”和“TextField”,而“pub_date”字段被定义为“DateTimeField”。

数据库迁移

我们已经定义了一个新的模型,但是现在数据库中还没有对应的表。我们需要使用Django的数据库迁移功能来将模型同步到数据库中。

在终端中进入“myproject”目录,并运行以下命令:

python manage.py makemigrations

这个命令将会自动生成一个新的迁移文件,它记录了我们对模型的修改。现在,我们可以使用以下命令来应用这个迁移,将模型同步到数据库中:

python manage.py migrate

这个命令将会创建一个名为“myapp_blogpost”的新表,其中包含我们在模型中定义的字段。

操作模型

现在我们已经将模型同步到数据库中,可以开始对它进行操作了。我们可以使用Django的API来创建、读取、更新和删除模型实例。

让我们在“myapp/views.py”文件中添加以下代码来创建一个新的博客文章:

from django.shortcuts import render
from .models import BlogPostdef create_post(request):post = BlogPost(title='My First Blog Post', content='Hello, World!')post.save()return render(request, 'create_post.html')

这个视图函数将创建一个新的博客文章,并将其保存到数据库中。我们可以在浏览器中访问“/create_post/”路由来运行这个视图函数。

我们可以使用以下代码来获取所有博客文章并将它们呈现在模板中:

from django.shortcuts import render
from .models import BlogPostdef list_posts(request):posts = BlogPost.objects.all()return render(request, 'list_posts.html', {'posts': posts})

这个视图函数将获取所有的博客文章,并将它们传递给一个名为“list_posts.html”的模板。我们可以在模板中使用以下代码来呈现这些博客文章:

{% for post in posts %}<h2>{{ post.title }}</h2><p>{{ post.content }}</p><p>{{ post.pub_date }}</p>
{% endfor %}

这个模板将遍历所有的博客文章,并将它们呈现为标题、内容和发布日期的列表。

我们也可以使用以下代码来更新和删除模型实例:

from django.shortcuts import render, get_object_or_404
from .models import BlogPostdef edit_post(request, post_id):post = get_object_or_404(BlogPost, pk=post_id)post.title = 'My Updated Blog Post'post.content = 'Hello, World! (Updated)'post.save()return render(request, 'edit_post.html')def delete_post(request, post_id):post = get_object_or_404(BlogPost, pk=post_id)post.delete()return render(request, 'delete_post.html')

这些视图函数将获取指定的博客文章,并更新或删除它们。我们可以在浏览器中访问“/edit_post/1/”和“/delete_post/1/”路由来运行这些视图函数,并更新或删除第一个博客文章。

结论

在本篇教程中,我们介绍了Django的模型层,并创建了一个简单的模型来存储博客文章。我们还使用Django的数据库迁移功能将模型同步到数据库中,并使用Django的API来操作模型实例。

在下一篇教程中,我们将深入探讨Django的视图层(View),它是Django应用程序的另一个核心组件。


http://www.ppmy.cn/news/31434.html

相关文章

Oracle 实现对全局错误语句的审计监控 ORA- alert

--将所有数据库ora-错误写入表create table error_tab (username varchar2(4000), d_current_nr_error varchar2(4000), ora_server_error_msg varchar2(4000), full_text varchar2(4000),errdate date);create or replace trigger error_triggerafter servererror on database…

04从零开始学Java之可能是最详细的Java环境配置教程

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者前言在上一篇文章中&#xff0c;壹哥给大家重点讲解了Java实现跨平台的原理&#xff0c;不知道你现在有没有弄清楚呢&#xff1f;如…

ASP.NETCore学习资料

1.ASP.NETCore比ASP.NET更具优势的地方是什么&#xff1f; ASP.NET Core(ASP.NET Core 简介) ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET(ASP.NET 简介) ASP.NET 是一个成熟的框架&#xff0c;提…

react+antdpro+ts实现企业级项目四:注册页面实现及useEmotionCss的介绍

创建文件路径并注册register路由 在pages/User下创建Register文件夹并创建index.tsx文件 然后在config/routes创建register注册路由。注册完后&#xff0c;当在登陆页面点击注册按钮时就可以跳转到此注册页面而不会报404了。 export default [{path: /user,layout: false,rou…

【Java】SpringBoot中实现异步编程

前言 首先我们来看看在Spring中为什么要使用异步编程&#xff0c;它能解决什么问题&#xff1f; 什么是异步&#xff1f; 首先我们先来看看一个同步的用户注册例子&#xff0c;流程如下&#xff1a; 异步的方式如下&#xff1a; 在用户注册后将成功结果返回&#xff0c;…

[学习笔记] 3. 算法进阶

算法进阶视频地址&#xff1a;https://www.bilibili.com/video/BV1uA411N7c5 1. 贪心算法 贪心算法&#xff08;又称贪婪算法&#xff09;&#xff0c;是指在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑 —— 所做…

学生信息管理系统--课后程序(Python程序开发案例教程-黑马程序员编著-第6章-课后作业)

实例2&#xff1a;学生信息管理系统 学生信息管理系统是用于管理学生信息的管理软件&#xff0c;它具备学生信息的查找、修改、增加和删除功能&#xff0c;利用该系统可实现学生信息管理的电子化&#xff0c;提高信息管理效率。 本实例要求编写程序&#xff0c;实现学生信息管…

嵌入式学习笔记——使用寄存器编程实现按键输入功能

文章目录前言模块介绍原理图编程思路检测IO口的电平前言 昨天&#xff0c;通过配置通用输出模式&#xff0c;实现了LED灯的点亮、熄灭以及流水等操作&#xff0c;解决了通用输出的问题&#xff0c;今天我们再借用最常见的输入模块&#xff0c;按键来实现一个按键控制LED的功能…