首页
学习
活动
专区
圈层
工具
发布

django 入门:通用视图类重构视图

作者:Kuky_xs 博客:https://www.jianshu.com/p/8cdf099e974f 1 正文 《django入门:环境及项目搭建》 《django入门:数据模型》 《django入门...:视图及模版》 《django入门:Admin管理系统及表单》 终于到最后一部分了,这部分我们将通过 django 自带的通用视图类替换之前写的视图函数,对视图进行重构 2 利用 django 通用视图类创建类视图..., DetailView from django.shortcuts import get_object_or_404 from blog.models import Post # 获取相应模型下的全部数据...= 'post_list' # 该方法默认返回指定模型的全部数据,通过复写该方法,改变默认行为 def get_queryset(self): # 类视图中,从...带分页列表 目前的分页效果看上去并不那么美观,在实际项目中,我们优化了分页的显示,具体的代码就不贴了(我怕代码太多你们会打我),可以下载项目查看,这边我们可以看下效果图 ?

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

    Django搭建blog网站(二)

    这些内容相对比较固定,且在各个页面都会显示,如果像文章列表或者文章详情一样,从视图函数中获取然后传递给模板,则每个页面对应的视图函数里都要写一段获取这些内容的代码,这会导致很多重复代码。...例如名为 get_recent_posts 的模板标签,它可以这样工作:我们只要在模板中写入 {% get_recent_posts as recent_post_list %},那么模板中就会有一个从数据库获取的最新文章列表...{% endfor %} 这里我们通过使用 get_recent_posts 模板标签获取到最新文章列表,然后我们通过 as 语法(Django 模板系统的语法)将获取的文章列表保存进了...# 这里我们使用了 Django 提供的一个快捷函数 get_object_or_404, # 这个函数的作用是当获取的文章(Post)存在时,则获取;否则返回 404 页面给用户。...我们通过一个博客实战项目,了解了 Django 基本的开发技术。

    5.3K100

    django 1.8 官方文档翻译: 1-2-3 编写你的第一个Django应用,第3部分

    哲理 在 Django 应用程序中,视图是一“类”具有特定功能和模板的网页。 例如,在一个博客应用程序中,你可能会有以下视图: 博客首页 – 显示最新发表的博客。...Django 是通过 ‘URLconfs’ 从 URL 获取到视图的。而 URLconf 是将 URL 模式 ( 由正则表达式来描述的 ) 映射到视图的一种配置。...Django 将会在那寻找模板。 Django 的 TEMPLATE_LOADERS 配置中包含一个知道如何从各种来源导入模板的可调用的方法列表。...快捷方式: get_object_or_404() 这很常见,当你使用 get() 获取对象时 对象却不存在时就会抛出 Http404 异常。对此 Django 提供了一个快捷操作。...URL 名称的命名空间 本教程中的项目只有一个应用:polls 。在实际的 Django 项目中,可能有 5、10、20 或者 更多的应用。Django 是如何区分它们的 URL 名称的呢?

    2.8K50

    Django 1.10中文文档-第一个应用Part3-视图和模板

    您的视图可以从数据库读取记录,也可以不读取。它可以使用模板系统:如Django的或第三方Python模板系统 或不。...下面是一个新的index()视图,它显示系统中最新发布的5条questions记录,并用逗号分隔: # polls/views.py from django.http import HttpResponse...因此,我们使用Django的模板系统,通过创建一个视图能够调用的模板,将页面的设计从Python中分离出来。 首先,在你的polls目录下创建一个叫做 templates的目录。...Django将在这里查找模板。 项目的settings.py中的templates配置决定了Django如何加载渲染模板。将APP_DIRS设置为True。...URL name的命名空间 教程中的这个项目只有一个应用polls。在真实的Django项目中,可能会有五个、十个、二十个或者更多的应用。 Django如何区分它们URL的名字呢?

    3.2K60

    Django快速入门——投票程序(3)视图

    我们修改了index函数,获取数据库中最近5个问题并显示。...所以让我们使用 Django 的模板系统,只要创建一个视图,就可以将页面的设计从代码中分离出来。 首先,在你的polls目录里创建一个 templates目录。...Django将会在这个目录里查找模板文件。 项目的TEMPLATES配置项描述了Django 如何载入和渲染模板。...Django 也提供了一个快捷函数get_object_or_404(),下面是修改后的详情 detail() 视图代码: from django.shortcuts import get_object_or...为 URL 名称添加命名空间 教程项目只有一个应用:polls 。在一个真实的 Django 项目中,可能会有五个,十个,甚至更多应用。Django 如何分辨重名的 URL 呢?

    79620

    分类与归档

    侧边栏已经正确地显示了最新文章列表、归档、分类等信息。现在来完善归档和分类功能,当用户点击归档下的某个日期或者分类下的某个分类时,跳转到文章列表页面,显示该日期或者分类下的全部文章。...,而在我们的归档和分类视图中,我们不再使用 all 方法获取全部文章,而是使用 filter 来根据条件过滤。...两个括号括起来的地方是两个命名组参数,Django 会从用户访问的 URL 中自动提取这两个参数的值,然后传递给其对应的视图函数。...分类页面 同样的写好分类页面的视图函数: blog/views.py import markdown from django.shortcuts import render, get_object_or...render(request, 'blog/index.html', context={'post_list': post_list}) 这里我们首先根据传入的 pk 值(也就是被访问的分类的 id 值)从数据库中获取到这个分类

    1.9K90

    python-Django-URL 路由(二)

    Django URL路由的示例 下面是一个简单的Django应用程序的示例,它使用URL路由来处理客户端请求。...在这个示例中,我们将这些视图函数定义在名为views.py的文件中:: from django.shortcuts import render, get_object_or_404, redirect...如果请求方法是POST,视图函数将获取用户提交的文章标题和内容,并创建一个新的Post对象,然后将用户重定向到新创建的文章的详细页面。...视图函数获取文章的slug,并使用get_object_or_404函数从数据库中获取文章对象。然后,视图函数将文章对象传递给包含文章详细信息的HTML模板。...如果请求方法是POST,视图函数将获取用户提交的文章标题和内容,并更新现有的Post对象,然后将用户重定向到更新后的文章的详细页面。

    1.4K20

    Django来敲门升级版----认证authenticate

    这个问题最直接的解决方案就是如果进行了权限更新的话,为了不受缓存数据的影响,直接从数据库中重新获取用户数据即可!...ContentType from django.shortcuts import get_object_or_404 from myapp.modles import Article def user_gains_perms...(request, user_id): # 获取一个用户对象 user = get_object_or_404(User, pk=user_id) # 检查权限:注意~此时检查权限的结果会被缓存起来 user.has_perm...()函数添加的用户信息从系统中移除,logout()函数需要一个HttpRequest请求对象参数,无返回值。...登录认证装饰器 Django提供了内置封装的装饰器进行登录认证操作,认证失败时自动跳转到项目配置文件指向的LOGIN_URL路径 from django.contrib.decorators import

    90030

    First Django App!

    个人学习笔记,参考django官方文档:https://docs.djangoproject.com/zh-hans/3.2/ 一、First Django APP   上篇笔记从零创建了一个django...项目,一个项目肯定是由多个模块组成的,比方说一个电商项目,包括支付模块,商品展示模块,商家用户聊天模块等等,这些模块便可称之为一个应用。   ...# Register your models here. admin.site.register(Question) 2、启动项目   重新启动下项目,看下Django后台可不可以编辑我们的数据表。...2、改良视图   在视图中,我们是通过get方法获取数据表中的数据然后赋值给一个变量(对象),但我们也可以直接把数据表搬到视图中,这应该就是所谓的通用视图吧。   ...polls/urls.py from django.http import HttpResponseRedirect from django.shortcuts import get_object_or

    2.5K10

    第 13 篇:分类、归档和标签页

    作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 点击本文最下方的“阅读原文”即可获取 侧边栏已经正确地显示了最新文章列表、归档、分类、标签等信息...,而在归档和分类视图中,我们不再使用 all 方法获取全部文章,而是使用 filter 来根据条件过滤。...会从用户访问的 URL 中自动提取 URL 路径参数转换器 规则捕获的值,然后传递给其对应的视图函数。...分类页面 同样的写好分类页面的视图函数: blog/views.py import markdown from django.shortcuts import render, get_object_or...render(request, 'blog/index.html', context={'post_list': post_list}) 这里我们首先根据传入的 pk 值(也就是被访问的分类的 id 值)从数据库中获取到这个分类

    1.1K30

    Django快速入门——投票程序(4,6)表单&界面、风格

    import HttpResponse, HttpResponseRedirect from django.shortcuts import get_object_or_404, render from...让我们来编写这个视图: from django.shortcuts import get_object_or_404, render def results(request, question_id...代码首先从数据库中获取了 selected_choice 对象,接着计算 vote 的新值,最后把值存回数据库。如果网站有两个方可同时投票在 同一时间 ,可能会导致问题。...在Django中,我们把这些文件统称为“静态(static)文件”。 对于小项目来说,这个问题没什么大不了的,因为你可以把这些静态文件随便放在哪,只要服务程序能够找到它们就行。...然而在大项目——特别是由好几个应用组成的大项目——中,处理不同应用所需要的静态文件的工作就显得有点麻烦了。

    99720
    领券