首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于类的通用视图:ListView 和 DetailView

在开发网站的过程中,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑是一样的。比如一个博客和一个论坛,通常其首页都是展示一系列的文章列表或者帖子列表。...对处理首页的视图函数来说,虽然其处理的对象一个是文章,另一个是帖子,但是其处理的过程是非常类似的。首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...使用类视图是 Django 推荐的做法,而且熟悉了类视图的使用方法后,能够减少视图函数的重复代码,节省开发时间。接下来就让我们把博客应用中的视图函数改成基于类的通用视图。...将 index 视图函数改写为类视图 针对这种从数据库中获取某个模型列表数据(比如这里的 Post 列表)的视图,Django 专门提供了一个 ListView 类视图。...该方法默认获取指定模型的全部列表数据。为了获取指定分类下的文章列表数据,我们覆写该方法,改变它的默认行为。

2.6K70

关于“Python”的核心知识点整理大全55

在自己的项目中编 写这样的查询时,先在Django shell中进行尝试大有裨益。相比于编写视图和模板,再在 浏览器中检查结果,在shell中执行代码可更快地获得反馈。 3....接下来,我们显示当前的主题(见1), 它存储在模板变量{{ topic }}中。为什么可以使用变量topic呢?因为它包含在字典context中。...在Django中,创建表单的最简单方式是使用ModelForm,它根据我们在第18章定义的模型中 的信息自动创建表单。...最简单的ModelForm版本只包含一个内嵌的Meta类,它告诉Django根据哪个模型创建表单,以 及在表单中包含哪些字段。...这 种自动验证避免了我们去做大量的工作。如果所有字段都有效,我们就可调用save()(见), 将表单中的数据写入数据库。保存数据后,就可离开这个页面了。

16610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    First Django App!

    访问http://127.0.0.1:8000/polls/正常显示 八、路由分发的进阶   上面写了几个投票,他是一个超链接, href值指向的是这个投票对应的详情。...但这样还有一个问题,我们的URL最终是给项目使用的,但一个项目里有多个应用,名字有重名怎么办,所以这就需要我们为应用加一个名字。...十一、编写表单   我们已经写好的详情页需要显示的内容,但这毕竟是一个选择题,这样写只能展示,但用户没法选择,所以我们需要写一个表单。 detail.html 的表单,我们是需要提交数据到数据库的,目前的这个提交按钮形同虚设,所以我们需要定义一个新的视图函数,然后添加到表单的action属性上。...这个视图函数负责接受表单里的数据,然后将其添加到数据库中。 polls/views.py # Django自带的渲染函数,默认已经引入,404处理函数。

    2.1K10

    django 1.8 官方文档翻译: 5-1-1 使用表单

    实例化、处理和渲染表单 在Django 中渲染一个对象时,我们通常: 在视图中获得它(例如,从数据库中获取) 将它传递给模板上下文 使用模板变量将它扩展为HTML 标记 在模板中渲染表单和渲染其它类型的对象几乎一样...在模型实例不包含数据的情况下,在模板中对它做处理很少有什么用处。但是渲染一个未填充的表单却非常有意义 —— 我们希望用户去填充它。 所以当我们在视图中处理模型实例时,我们一般从数据库中获取它。...在发送HTTP 重定向给浏览器告诉它下一步的去向之前,我们可以用这个数据来更新数据库或者做其它处理。 模板 我们不需要在name.html 模板中做很多工作。...现在我们有了一个可以工作的网页表单,它通过Django Form 描述、通过视图处理并渲染成一个HTML 。 这是你入门所需要知道的所有内容,但是表单框架为了提供了更多的内容。...通常,隐藏字段中的错误意味着表单被篡改,因为正常的表单填写不会改变它们。然而,你也可以很容易地为这些表单错误插入一些错误信息显示出来。

    4.3K20

    关于“Python”的核心知识点整理大全56

    在1处, 我们定义了一个HTML表单。实参action告诉服务器将提交的表单数据发送到哪里,这里我们将 它发回给视图函数new_topic()。...修饰符as_p让Django以段落格式渲染所有表单元素,这是一种整洁地显 示表单的简单方式。 Django不会为表单创建提交按钮,因此我们在4处定义了一个这样的按钮。 6....用于添加新条目的表单 我们需要创建一个与模型Entry相关联的表单,但这个表单的定制程度比TopicForm要高些: forms.py from django import forms from...如果请求方法为POST,我们就对数据进行处理:创建一个EntryForm 实例,使用request对象中的POST数据来填充它(见4);再检查表单是否有效,如果有效,就设 置条目对象的属性topic,再将条目对象保存到数据库...视图函数edit_entry() 页面edit_entry收到GET请求时,edit_entry()将返回一个表单,让用户能够对条目进行编 辑。

    14010

    评论

    我们知道每一个 URL 对应着一个 Django 的视图函数,于是 Django 调用这个视图函数,我们在视图函数中写上处理用户通过表单提交上来的数据的代码,比如验证数据的合法性并且保存数据到数据库中,...如果表单对应有一个数据库模型(例如这里的评论表单对应着评论模型),那么使用 ModelForm 类会简单很多,这是 Django 为我们提供的方便。...Django 的表单和这个思想类似,正常的前端表单代码应该是和本文开头所提及的那样,但是我们目前并没有写这些代码,而是写了一个 CommentForm 这个 Python 类。...但既然我们已经有了一个 Post 模型的实例 post(它对应的是 Post 在数据库中的一条记录),那么获取和 post 关联的评论列表有一个简单方法,即调用它的 xxx_set 属性来获取一个类似于...我们可以看到评论表单和评论列表是位于文章详情页面的,处理文章详情页面的视图函数是 detail,相应地需要更新 detail,让它生成表单和从数据库获取文章对应的评论列表数据,然后传递给模板显示: blog

    3.2K60

    如何使用 Django Forms 创建表单?

    这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情 Django 表单是一组高级 HTML 表单,可以使用 python 创建并以 Python 方式支持 HTML 表单的所有功能...字段的语法表示为 语法 : 现在要将这个表单渲染到一个视图中,移动到views.py并创建一个home_view,如下所示。...在视图中,只需在 forms.py 中创建上面创建的表单类的一个实例。...现在让我们编辑模板 > home.html 全部设置为检查表单是否正常工作让我们访问**http://localhost:8000/** 表单工作正常,但视觉效果令人失望,Django 提供了一些预定义的方式以方便的方式显示表单...会将它们呈现在 标签中 也可以使用 {{ form.field_name }} 修改这些设置并根据需要显示字段,但是如果某些字段为空并因此需要特别小心,这可能会改变正常的验证过程。

    17010

    37.Django1.11.6文档

    实例化、处理和渲染表单 在Django 中渲染一个对象时,我们通常: 在视图中获得它(例如,从数据库中获取) 将它传递给模板的context 使用模板变量将它扩展为HTML 标记 除了几个关键点不同之外...在模型实例不包含数据的情况下,在模板中对它做处理很少有什么用处。 但是渲染一个未填充的表单却非常有意义 —— 我们希望用户去填充它。 所以当我们在视图中处理模型实例时,我们一般从数据库中获取它。...生成的标签会被放置到{{ form }}所在的位置。 现在我们有了一个可以工作的网页表单,它通过Django Form 描述、通过视图处理并渲染成一个HTML 。...get_user方法使用一个user_id,可以是用户名,数据库ID等等,但必须是用户对象的主键,并返回一个用户对象。...save()旨在保存现有会话(即从会话存储中加载的会话)。 在新会话中调用save()也可以正常工作,但生成与现有事件相冲突的session_key的几率很小。

    24.4K80

    Django 3.1 官网学习路线

    我们会给出一个例子。 path() argument: kwargs 可以在字典中将任意关键字参数传递给目标视图。在本教程中,我们不会使用 Django 的此功能。...您将在 Python 代码中使用此值,数据库将使用它作为列名。 可以对字段使用可选的第一个位置参数来指定我们可读的名称。它在 Django 的几个内省部分中使用,同时也用作文档。...迁移功能非常强大,它允许您在开发项目时随着时间的推移更改模型,而不需要删除数据库或表并创建新表——它专门用于实时升级数据库,而不会丢失数据。...如果您想改变页面的外观,您必须编辑此 Python 代码。因此,让我们使用 Django 的模板系统来创建视图可以使用的模板,从而将设计与 Python 分离开来。...通常,您需要定制管理表单的外观和工作方式。可以通过在注册对象时告诉 Django 所需的选项来实现。 通过重新排列编辑表单中的字段来了解其工作原理。

    8.2K10

    Django 官方推荐的姿势:类视图

    对处理首页的视图函数来说,虽然其处理的对象一个是文章,另一个是帖子,但是其处理的过程是非常类似的:首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...使用类视图是 django 推荐的做法,熟悉了类视图的使用方法后,能够减少视图函数的重复代码,节省开发时间。接下来就让我们把博客应用中的视图函数改成基于类的通用视图。...将 index 视图函数改写为类视图 针对这种从数据库中获取某个模型列表数据(比如这里的 Post 列表)的视图,Django 专门提供了一个 ListView 类视图。...比如 path('', views.index, name='index'),它的第一个参数是 URL 模式,第二个参数是视图函数 index。对 url 函数来说,第二个参数传入的值必须是一个函数。...该方法默认获取指定模型的全部列表数据。为了获取指定分类下的文章列表数据,我们覆写该方法,改变它的默认行为。

    1.3K20

    ASP.NET MVC框架(第四部分): 处理表单编辑和提交场景

    在今天的帖子里,我将讨论你可以用MVC框架来处理表单输入和提交场景的各种方法,以及讨论一些你可以用来简化数据编辑场景的HTML辅助方法。...注意Html.Select辅助方法有个重载版本,允许你指定下拉框中的选定值是什么。在下面的代码片断中,我表示我要Category下拉框根据编辑产品目前的CategoryID值自动选择某一项: ?...但注意,填充的不是一个空对象,我们使用了一个模式,先从数据库中获取老的值,然后对它应用用户做的改动,然后更新到数据库中。...结语 希望本帖子提供了在ASP.NET MVC框架中如何处理表单输入和提交场景的一些细节,还提供了你可以如何处理和结构化常见数据输入和编辑场景的一些背景。...点击这里下载一个内含我们在上面建造的完整应用源代码的.ZIP 文件。 在将来的帖子里,我将讨论如何处理表单输入和编辑场景中数据验证和错误复原的情形。

    5.1K70

    完整的 Django 零基础教程|初学者指南 - 第 3 部分 转自:维托尔·弗雷塔斯

    网页版项目 我不了解您,但就我个人而言,通过查看实际示例和代码片段,我学到了更多。...实线告诉我们的是,在Topic 中 ,我们需要有一个字段来标识它属于哪个Board 。同样,帖子 将需要一个字段来表示它属于哪个主题 ,以便我们可以在讨论中仅列出在特定主题中创建的帖子 。...开始开发所需的信息。稍后,我们可以使用migrations 改进模型,您将在下一个教程中详细介绍。 但就目前而言,这将是我们模型字段的基本表示: ? 类图 这个类图强调模型之间的关系。...如果我们不为模型指定主键,Django 会自动为我们生成它。所以我们现在很好。在下一节中,您将更好地了解它是如何工作的。 迁移模型 下一步是告诉 Django 创建数据库,以便我们可以开始使用它。...在本教程系列中,我们不会直接使用 SQL。所有的工作都将使用 Django ORM 完成,它是一个与数据库通信的抽象层。

    2.2K40

    注册

    编写用户注册表单 Django 已经内置了一个用户注册表单:django.contrib.auth.forms.UserCreationForm,不过这个表单的一个小问题是它关联的是 django 内置的...好在表单实际上就是一个 Python 类,因此我们可以继承它,对它做一点小小的修改就可以了。...注意:虽然 model 属性的值都被指定为 User,但一个是 auth.User,另一个是 users.User。 编写用户注册视图函数 首先来分析一下注册函数的逻辑。...这种表单渲染方式是一种比较通用的做法,你可以把它当做一个模板,稍作修改就可以应用与其它需要渲染表单的模板中。...浏览器输入 http://127.0.0.1:8000/admin/,登录管理员账户,可以查看到注册的用户信息了,比如在我的后台可以看到三个用户: image.png 其中有一个是使用 createsuperuser

    9.1K60

    Django 1.10中文文档-第一个应用Part7-自定义管理站点

    点击它,会弹出一个新增Question的表单,类似Question自己的添加表单。填入相关信息点击保存后,Django自动将该Question保存在数据库,并作为当前Choice的关联外键对象。...它可以用Django的模板系统轻松改变。 Django的管理站点是用Django自己制作出来的,它的界面代码使用的是Django自己的模板系统。...模板组织方式:就像静态文件一样,我们可以把所有的模板都放在一起,形成一个大大的模板文件夹,并且工作正常。但是不建议这样!...请参考[如何重用apps](> 模板组织方式:就像静态文件一样,我们可以把所有的模板都放在一起,形成一个大大的模板文件夹,并且工作正常。但是不建议这样!...Part3-视图和模板 Django 1.10中文文档-第一个应用Part4-表单和通用视图 Django 1.10中文文档-第一个应用Part5-测试 Django 1.10中文文档

    3.6K60

    Flask VS Django:为什么Flask可能会更好

    在Django中运行比在Flask中运行更复杂的Web应用程序(例如处理和验证用户输入并将其存储在数据库中)的Web应用程序可能需要更少的时间和精力。...通常我们会在这里渲染一个模板或返回HTML,这样用户就可以看到一个格式很好的页面,但返回一个Python字符串也可以正常工作。...您可以忽略有关迁移的警告 - 这与我们未使用的Web应用程序的数据库有关。 第10行是重要的一行,与Flask类似,它告诉您运行服务器的端口。...最后的评论 在这篇文章中,我介绍了Flask和Django,然后对两者进行了简短的比较,接着展示了如何使用每个框架构建一个“Hello World”应用程序。...如果您在阅读本指南后仍然怀疑使用哪个框架,我建议您使用Flask - 您将弄清楚这些部分如何更容易组合在一起,并且您将永远不会有功能你实际上并没有使用。

    8.5K20

    小白学Python – Django Web 开发教程一

    Python Django 是一个 Web 框架,可以快速创建高效的网页。Django 也被称为包含电池的框架,因为它提供了内置功能,例如 Django 管理界面、默认数据库 – SQLite3 等。...它负责维护数据。它是整个应用程序背后的逻辑数据结构,由数据库(一般是关系型数据库如MySql、Postgres)来表示。 视图:视图是您渲染网站时在浏览器中看到的用户界面。...使用终端输入命令进入项目 cd projectName 现在让我们运行服务器并查看一切是否正常工作。要运行服务器,请在终端中键入以下命令。...例如,如果您要创建博客,则应为评论、帖子、登录/注销等创建单独的模块。在 Django 中,这些模块称为应用程序。每个任务都有一个不同的应用程序。...', ] Django视图 视图函数是一个 Python 函数,它接受 Web 请求并返回 Web 响应。

    29020

    Django-form表单

    我们可能想使用非常复杂的字段,以允许用户做类似从日历中挑选日期这样的事情,等等。 这个时候,让Django 来为我们完成大部分工作是很容易的。...这是我们在第一个访问该URL 时预期发生的情况。 如果表单的提交使用POST 请求,那么视图将再次创建一个表单实例并使用请求中的数据填充它:form = NameForm(request.POST)。...这时表单不再为空(未绑定),所以HTML 表单将用之前提交的数据填充,然后可以根据要求编辑并改正它。...在发送HTTP 重定向给浏览器告诉它下一步的去向之前,我们可以用这个数据来更新数据库或者做其它处理。 模板 我们不需要在name.html 模板中做很多工作。最简单的例子是: ?...现在我们有了一个可以工作的网页表单,它通过Django Form 描述、通过视图处理并渲染成一个HTML 。

    3.9K70

    学习版pytest内核测试平台开发万字长文入门篇

    前言 2021年,测试平台如雨后春笋般冒了出来,我就是其中一员,写了一款pytest内核测试平台,在公司落地。...它叫做根组件,router-view是一块区域,用来展示路由匹配到的组件,也就是说所有路由匹配到的组件都会通过App.vue根组件来展示。路由配置在router/index.js文件中编辑: ?...除了类视图,Django也提供了函数视图,并且Django REST framework提供了函数视图的方法装饰器,可以像flask框架一样,感受写纯后端接口的体验,按这个方法来写修改密码接口: ?...修改密码时,会对jwt进行解码,获取到user_id,然后检查老密码是否和数据库中的密码hash值一致。 前后端联调 根据以上思路把前后端的代码写完以后,就可以把项目跑起来看看效果了。...Mock Server可以使用JavaScript的mock.js来搭建,也可以使用Python的FastAPI ,不嫌麻烦用Spring Boot或者Nginx做一个也可以。

    5K30

    Django Admin后台管理:高效开发与实践

    框架自带的一个管理后台工具,它允许开发者通过一个直观的Web界面轻松地管理应用中的数据模型。...2.3 字段和字段集的管理 字段管理:可以在Admin类中使用fields或fieldsets属性来控制编辑页面中字段的显示。...用户模型:Django提供了一个默认的用户模型,包含用户名、密码和电子邮件等字段。 3.2 用户、组和权限的管理 用户管理:在Django Admin中,可以创建、编辑和删除用户。...3.5 用户界面定制 自定义登录界面:可以创建自定义的登录视图和模板来替换默认的登录界面。 自定义用户注册:可以编写自定义的用户注册视图和表单。...4.3 数据库索引优化 索引的重要性:索引可以显著提高查询性能,尤其是在大型数据库中。 创建索引:可以在模型字段上使用db_index=True来创建索引,或者在数据库级别手动创建索引。

    26010

    django 1.8 官方文档翻译:13-1-2 使用Django认证系统

    它提供一种分配权限给特定的用户和用户组的方法。 它被Django的admin站点使用,但欢迎你在你自己的代码中使用。...如果你视图登入一个直接从数据库中取出的用户,将会抛出一个错误。...视图 ,会使用新的密码哈希值升级会话,以便用户在修改密码是不会登出。...认证的视图 Django提供一些视图,你可以用来处理登录、登出和密码管理。它们使用stock auth 表单,但你也可以传递你自己的表单。 Django没有为认证视图提供默认的模板。...修改密码 用户密码不会显示在admin上(也不会存储在数据库中),但是会显示 密码存储的细节。 这个信息的显示中包含一条指向修改密码表单的链接,允许管理员修改用户的密码。

    4.7K20
    领券