18 Django视图之视图和模型的交互
在上一篇教程中,我们介绍了如何配置Django的URL,这为我们接下来的视图逻辑打下了基础。本篇文章将重点讨论Django视图与模型的交互,帮助你理解如何通过视图来处理数据并与模型进行交互。
理解视图与模型的关系
在Django中,视图是处理HTTP请求和返回HTTP响应的函数或类,而模型则是定义数据结构和数据库交互的类。视图和模型之间的交互是通过Django的ORM(对象关系映射)来实现的。
基本模型
首先,我们需要定义一个模型。假设我们正在创建一个简单的博客应用,其中包含文章(Article)模型。我们可以在models.py
中定义如下:
1 | from django.db import models |
在这个Article
模型中,我们定义了三个字段:title
,content
,和created_at
。每当一个新的Article
实例被创建时,created_at
字段会自动保存创建时间。
创建视图
接下来,我们需要在视图中处理与模型的交互。例如,我们想要显示所有的文章列表。我们可以在views.py
中定义一个视图来完成这个任务:
1 | from django.shortcuts import render |
在上面的代码中,我们创建了一个名为article_list
的视图。这个视图使用Article.objects.all()
方法从数据库中获取所有文章,并将其传递给模板article_list.html
。
配置URL
我们需要在urls.py
中配置这个视图,以便用户可以访问文章列表页面:
1 | from django.urls import path |
现在,访问/articles/
路径时,会触发article_list
视图并显示所有文章。
使用模板展示数据
接下来,我们需要创建一个模板来展示文章的信息。在templates/article_list.html
文件中,我们可以这样编写模板:
1 |
|
在这个模板中,我们使用了Django的模板语言把articles
变量中的每一篇文章的标题、内容和创建时间都展示出来。
处理文章的创建
除了展示文章,我们也希望能够创建新的文章。我们可以为此创建一个新的视图和模板。
首先,在views.py
中添加一个用于处理文章创建的视图:
1 | from django.shortcuts import redirect |
在这个视图中,我们通过ArticleForm
来处理表单输入。当接收到POST
请求时,我们验证数据并保存到数据库,成功后重定向到文章列表。
创建表单
我们需要创建ArticleForm
类,用于处理文章的输入。在forms.py
中:
1 | from django import forms |
这个表单将生成一个用于输入文章标题和内容的表单。
创建文章的模板
创建一个新的模板create_article.html
,用于展示文章创建的表单:
1 |
|
注意这里我们使用了{% csrf_token %}
来防止跨站请求伪造攻击。
总结
在这一篇中,我们学习了如何通过Django视图和模型进行交互,创建和展示文章列表,以及如何创建新的文章。视图负责处理逻辑,而模型则负责与数据库的交互。在下一篇中,我们将深入了解Django模板语言,通过动态生成HTML来渲染数据。
希望你已经对视图和模型的交互有了清晰的认识,现在你可以开始构建你的应用了!
18 Django视图之视图和模型的交互