使用 Django 的模型,都是 django.db.models.Model 类的子类。 每个类将被转成数据库表。 每个字段由 django.db.models.Field 子类转成数据库的列。...在 论坛的回帖模型中,related_name = "+",不需要这种反向关系,不需要关系用户修改过哪些帖子。...import login_required from django.views.generic import UpdateView, ListView from django.utils import...forms import NewTopicForm, PostForm from .models import Board, Topic, Post ① 主题回复 class PostListView(ListView...post.topic = topic post.created_by = request.user post.save() # 更新回复帖子的时间
作者:HelloGitHub-追梦人物[1] 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库[2] 点击本文最下方的“阅读原文”即可获取 在开发网站的过程中,有一些视图函数虽然处理的对象不同...使用类视图是 django 推荐的做法,熟悉了类视图的使用方法后,能够减少视图函数的重复代码,节省开发时间。接下来就让我们把博客应用中的视图函数改成基于类的通用视图。...将 index 视图函数改写为类视图 针对这种从数据库中获取某个模型列表数据(比如这里的 Post 列表)的视图,Django 专门提供了一个 ListView 类视图。...blog/views.py from django.views.generic import ListView class IndexView(ListView): model = Post...比如这里 IndexView 的功能是从数据库中获取文章(Post)列表,ListView 就是从数据库中获取某个模型列表数据的,所以 IndexView 继承 ListView。
在年/月/日归档页面,以及详细页面和“最后发表”页面中,展示以数据库为基础的对象。 允许用户创建,更新和删除对象 – 以授权或者无需授权的方式。...DetailView通用视图提供了一个publisher对象给context,但是我们如何在模板中添加附加信息呢?...我们可能想要对图书列表按照出版日期进行排序来选择一个简单的例子,并且把 最近的放到前面: from django.views.generic import ListView from books.models...相当方便的是, ListView 有一个get_queryset() 方法来供我们重写。在之前,它只是返回一个queryset属性值,但是现在我们可以添加更多的逻辑。...class PublisherBookList(ListView): template_name = 'books/books_by_publisher.html' def get_queryset
1.创建视图类 import markdown from django.shortcuts import render from django.views.generic import ListView...类进行修改 # 基本属性同 HomeView 相同,也可以直接继承 HomeView 然后复写 get_queryset() 方法实现 class CategoryView(ListView):...context = super(PostDetailView, self).get_context(**kwargs) form = CommentForm() # 更新...P[0-9]+)/$', views.PostDetailView.as_view(), name='post'), ] 修改完后的界面应该和之前的效果是一样的 ? 列表界面 ?...ListView 中的 paginate_by 属性来设置分页 class PostListView(ListView): model = Post template_name = 'blog
上一节的注册中,使用了 form 表单,在 标签中,定义了 method 属性告诉浏览器想如何与服务器通信。...GET 用于从服务器请求数据,每当点击了一个链接或者直接在浏览器中输入一个网址时,就创建了一个 GET 请求。 POST 用于想更改服务器上的数据,每次发送数据给服务器都会导致资源状态变化。...Django 使用 CSRF Token 保护所有的 POST 请求,这是避免外部站点或者应用程序向服务器的应用程序提交数据的安全措施。...基于类的通用视图 from django.views.generic import UpdateView, ListView ① 主页 class BoardListView(ListView):...kwargs): kwargs['board'] = self.board return super().get_context_data(**kwargs) def get_queryset
Django中的一对多是在一中进行设置,这里对应于文章的分类,ForeignKey即数据库中的外键。...,因此重新降序排序 return sorted(date_dict.items(), reverse=True) 我们首先要在project_name/settings.py中配置好相应的配置文件...from blog.models import Article, Tag, Category from django.views.generic import ListView, DetailView...article_list def get_context_data(self, **kwargs): # 增加一个category_list,用于在页面显示所有分类,按照名字排序...,views.py中已经指定了context_object_name = "article_list",并且已经在get_queryset()中进行了markdown处理 {% for article
使用类视图是 Django 推荐的做法,而且熟悉了类视图的使用方法后,能够减少视图函数的重复代码,节省开发时间。接下来就让我们把博客应用中的视图函数改成基于类的通用视图。...将 index 视图函数改写为类视图 针对这种从数据库中获取某个模型列表数据(比如这里的 Post 列表)的视图,Django 专门提供了一个 ListView 类视图。...blog/views.py from django.views.generic import ListView class IndexView(ListView): model = Post...比如这里 IndexView 的功能是从数据库中获取文章(Post)列表,ListView 就是从数据库中获取某个模型列表数据的,所以 IndexView 继承 ListView。...在 Django 中 URL 模式的配置方式就是通过 url 函数将 URL 和视图函数绑定。
订阅form CreateView 创建对象 创建新文章页 UpdateView 更新对象 修改文章页 DeleteView 删除对象 删除文章页 Generic date views 显示一段时间内的对象...按时间归类的博客 1.ListView ?...None):返回该视图要显示的单个对象.如果提供了queryset,该queryset将作为对象的查询源,否则,将使用get_queryset().get_object()从视图的所有参数中查找pk_url_kwarg...from django.views.generic import TemplateView,ListView from django.utils import timezone from django.views.generic.detail...这种方式一般用于form需要更加精准的样式的时候,逐个元素逐个元素的编排到html中。 完成后可在页面上新增或修改项目信息。
继上篇 django2.0入门教程第三节,介绍了django2.0的视图views和模板template, 本节介绍如何在前台进行投票。...HttpResponseRedirect(reverse('polls:results', args=(question.id,))) 代码解析: request.POST['choice']接收表单页面提交的数据 将投票次数加1,并更新数据库...reverse from django.views import generic from .models import Question, Choice class IndexView(generic.ListView...): template_name = 'polls/index.html' context_object_name = 'latest_question_list' def get_queryset...入门教程不会对代码进入深入的讲解,先大致了解其作用即可,后续再逐个模块进行解析 源码下载 相关源码包 如果对django2.0教程感兴趣,请关注我的简书,持续更新中...
1.ListView ? 表示对象列表的一个页面. 执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须)....方法: get_queryset():返回用来获取本视图显示对象的queryset.如果设置了queryset属性,get_queryset()默认返回它的值. get_object(queryset=...None):返回该视图要显示的单个对象.如果提供了queryset,该queryset将作为对象的查询源,否则,将使用get_queryset().get_object()从视图的所有参数中查找pk_url_kwarg...,ListView from django.utils import timezone from django.views.generic.detail import DetailView from...这种方式一般用于form需要更加精准的样式的时候,逐个元素逐个元素的编排到html中。 完成后可在页面上新增或修改项目信息。
return render(request,'detail.html') 类视图写完后,还应该在urls.py中进行映射,映射的时候就需要调用View的类方法as_view()来进行转换。...在网站开发中,经常会出现需要列出某个表中的一些数据作为列表展示出来。比如文章列表,图书列表等等。在Django中可以使用ListView来帮我们快速实现这种需求。...paginate_by:指定这个列表一页中展示多少条数据。 context_object_name:指定这个列表模型在模板中的参数名称。- ordering:指定这个列表的排序方式。...get_queryset:如果你提取数据的时候,并不是要把所有数据都返回,那么你可以重写这个方法。将一些不需要展示的数据给过滤掉。...他们在Django中的路径为django.core.paginator.Paginator和django.core.paginator.Page。
一个简单表单 更新一下在上一个教程中编写的投票详细页面的模板polls/detail.html,让它包含一个HTML 元素: # polls/templates/polls/detail.html...Django为你提供了一个简单的方法来避免这个困扰,那就是在form表单内添加一条{% csrf_token %}标签,标签名不可更改,固定格式,位置任意,只要是在form表单内。... 现在,在浏览器中访问/polls/1/然后为Question投票。应该看到一个投票结果页面,并且在每次投票后都会更新。 如果提交时没有选择任何Choice,应该会看到错误信息。...reverse from django.views import generic from .models import Choice, Question class IndexView(generic.ListView...快速通道 Django 1.10中文文档-第一个应用Part1-请求与响应 Django 1.10中文文档-第一个应用Part2-模型和管理站点 Django 1.10中文文档-第一个应用
Class-based views是Django为解决建站过程中的常见的呈现模式而建立的。..."/login/" TemplateView 显示Django HTML template 一般网站中使用模板显示的页 ListView 显示对象列表 文章列表页 DetailView 显示对象详情 文章详细页...ListView简介 listview是一个展示列表的view,返回的是一个template,包含两个关键方法: def get_context_data(self, **kwargs):...def get_queryset(self): 第一个方法返回一个字典给前端,包括分页信息,列表信息,已经其他自定义的信息;第二个方法返回数据库中获取到的数据(可能经过条件迭代),具体实现的实例代码如下...在Django中, 我们可以使用mixin为CBVs提供更多的扩展性, 当然在类继承过程中, 我们推荐以下原则: Django自身提供的View永远在最右边 mixin依次在以上view的左边 mixin
但在一些复杂的应用中,你会发现组件之间存在各种各样复杂的交互关系。 这些组件有任何小的的更改都有可能会对应用程序的行为产生意想不到的后果。...在Part4中,我们介绍了一个继承ListView的基类视图: # polls/views.py class IndexView(generic.ListView): template_name...首先导入timezone模块,然后修改get_queryset()方法,如下: # polls/views.py from django.utils import timezone def get_queryset...有时,测试程序需要更新。...当你对Django 视图的测试感到满意后,请阅读本教程的第6部分来了解静态文件的管理。
开发环境 1. python: 3.6.8 2. django==1.11.22 models.py from django.db import models from django.db.models.signals...from pyquery import PyQuery as pq # pip install pyquery,获取到 html 中的 img 图片地址返回 from uuslug import slugify...="发表时间") time_update = models.DateTimeField(blank=True, null=True, auto_now=True, verbose_name="更新时间...from django.core.cache import cache from ipware.ip import get_ip class IndexView(generic.ListView)...model = Article # 定义从哪份 model 中查询 ip = None def get_queryset(self): articles =
在本讲中,我们开始首页功能的开发,在开发过程中,大家将会学习到Django中的通用视图类、分页对象paginator以及foreignKey外键的使用。 效果演示 [16851ab0d057a5d6?...执行后,django将为我们新建video文件夹。 python3 manage.py startapp video 下面的功能模块开发都在该应用(video)下进行。...显示列表数据非常简单,我们使用django中内置的视图模版类ListView来显示,首先在view.py中编写IndexView类,用它来显示列表数据。...这里我们使用到了django中的内置标签,比如for语句、empty语句。这些都是django中非常常用的语句。在之后的教程中我们会经常遇到。...c={{ item.id }} 这里用c代表分类的id,点击后,会传到视图类中,在视图类中,我们使用 get_queryset() 函数,将get数据取出来。
网站演示: https://bt.mypython.me 源码地址: https://github.com/geeeeeeeek/bt 项目开发过程 项目简介 该项目是基于python的web类库django...在该项目中,笔者开发了一个简单版的搜索网站,实现了对数据库数据的检索和更新。...self.request.GET.get("q", "") search\_list = Link.objects.get\_search\_list(self.q) # 如搜索为空...通用类,通过get_queryset()回调函数来实现搜索功能,并通过get_context_data来传递额外的数据给前端。...'limited', False) if was\_limited: messages.warning(self.request, "操作太频繁了,请1分钟后再试
1 编写一个简单的表单 1.1 模版中新增表单 更新一下在上一个教程中编写的投票详细页面的模板 (“polls/detail.html”) ,增加一个 HTML 元素: {{ question.question_text... 2 通用视图 投票应用中的 detail 和 results 视图的操作都差不多,显得冗余。...这些视图反映基本的 Web 开发中的一个常见情况:根据 URL 中的参数从数据库中获取数据、载入模板文件然后返回渲染后的模板。...(generic.ListView): template_name = 'polls/index.html' context_object_name = 'latest_question_list...' def get_queryset(self): """Return the last five published questions."""
jquery.fileupload.js中的$.fileupload()方法来上传文件,后端接收到后分批返回已上传块的进度,前端根据进度来更新界面。...w=1000&h=727&f=png&s=128275] 要填写的视频资料有视频标题、描述、分类、封面, 其中分类是通过get_context_data()带过来的, 填写后,点击**发布**,django...将通过UpdateView自动为你更新视频信息。...来显示视频列表,并通过get_queryset实现了搜索功能,通过get_context_data()实现了分页功能。...w=1000&h=519&f=png&s=187524] 你可能会发现,页面中还有编辑和删除的功能。编辑呢,是对单个视频对资料进行更新,删除即删除本条视频和视频文件。
GenericAPIView 是 Django REST Framework (DRF) 中的一个基础视图类,它继承自 APIView,并添加了一些常用的功能,特别是与数据库模型交互的功能。...它是 DRF 中通用视图和视图集的基础,提供了查询、序列化、分页等常用操作的标准实现。本质上它是 DRF 中所有通用视图(如 ListAPIView、RetrieveAPIView 等)的基础。二....减少重复代码 - 提供了常见操作的标准实现,如获取查询集、序列化数据等提高开发效率 - 内置了分页、过滤、排序等功能代码组织更清晰 - 将通用逻辑与业务逻辑分离易于扩展 - 可以通过重写方法来自定义行为与...search=django排序:/books/?ordering=-rating,title6. get_object() 方法详解此方法用于获取单个对象,并自动处理权限检查和 404 错误。...同时,GenericAPIView 也是 DRF 中更高级视图(如 ListAPIView、RetrieveAPIView 等)的基础。