FluorineFx自带的示例都不错,就是有点不简洁,下面的代码基本上已经最简版了(环境vs2010) 1、先创建一个Web Application,然后添加F...
在Django中,我们可以通过表单的初始化参数initial来传递自定义的初始值给表单字段。如果我们想要在视图中设置表单的初始值,可以在视图中创建表单的实例时,传递一个字典给initial参数。...1、问题背景我们遇到了这样一个问题:在使用 Django 表单时,我们希望将自定义表单中的值传递到视图中。然而,我们发现无法为多选选项的每个选项传递值。...我们对 Django 还很陌生,因此希望得到一些解释,以便更好地理解和学习。
属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤的对象列表,将取代model提供的值 context_object_name: 指定要在上下文中使用的变量的名称...属性: model: 视图要显示的模型 queryset: 表示对象的一个查询集.queryset的值优先于model的值. template_name: 字符串表示的模板名称. context_object_name...属性: form_class:要实例化的Form类. success_url:表单成功处理后重定向到的URL. tamplate_name:字符串表示的模板名称....这个变量会被传递给模板。...也可指定不同的模板。另外也可用template_name_suffix参数去指定模板。
首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...这个变量会被传递给模板。...(self, **kwargs): # 覆写 get_context_data 的目的是因为除了将 post 传递给模板外(DetailView 已经帮我们完成), #...还要把评论表单、post 下的评论列表传递给模板。...这个方法返回的值是一个字典,这个字典就是模板变量字典,最终会被传递给模板。
准备工作 新建一个Django项目 # 新建一个django项目 $ django-admin startproject mysite # 新建一个app $ django-admin startapp...Pd+)的形式捕获值给中得参数,比如(?...Pd+),当访问/blog/article/3时,将会将3捕获给article_id,这个值会传到views.ArticleDetailView。...假设用户要访问某篇文章,它会自动解析 blog:detail 这个视图函数对应的 url,并且把 article.pk(文章的主键)传递给detail视图函数,details就是我们在blog/urls.py...models.CharField('摘要', max_length=54, blank=True, null=True, help_text="可选,如若为空将摘取正文的前
自带的view如下表所示: 类名 功能 例子 View 基本View, 可以在任何时候使用 见后面详细介绍 RedirectView 重新定向到其他URL 将访问"/log-in/"的用户重新定向到"/...属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤的对象列表,将取代model提供的值 context_object_name: 指定要在上下文中使用的变量的名称...属性: model: 视图要显示的模型 queryset: 表示对象的一个查询集.queryset的值优先于model的值. template_name: 字符串表示的模板名称. context_object_name...属性: form_class:要实例化的Form类. success_url:表单成功处理后重定向到的URL. tamplate_name:字符串表示的模板名称....这个变量会被传递给模板。
Django尝试从model和 template层移除一些单调的情况,但是Web开发者依然会在view(视图)层经历这种厌烦。 Django的通用视图被开发用来消除这一痛苦。...此外,有问题的模型可以作为一个额外的参数传递到URLconf中。 Django通过通用视图来完成下面一些功能: 为单一的对象展示列表和一个详细页面。...这是通用视图在1.3发布中被重新设计的原因之一 - 之前,它们仅仅是一些函数视图加上 一列令人疑惑的选项;现在,比起传递大量的配置到URLconf中,更推荐的扩展通用视图的 方法是子类化它们,并且重写它们的属性或者方法...所有通用视图中有趣的特性来自于修改被传递到通用视图中的”信息” 字典。...和你一起工作的设计 模板的同事会感谢你的。 添加额外的上下文 多数时候,你只是需要展示一些额外的信息而不是提供一些通用视图。 比如,考虑到每个publisher 详细页面上的图书列表的展示。
django基于类的通用视图就是将一些mixin合成为有用的通用视图。...基于类的通用视图(以及任何继承了Django提供的基础类的基于类的视图)都能够以下面两种方式被配置:子类化,或者直接通过URLconf来传递参数。...当子类化一个类视图时,可以重写一些属性(比如template_name)或者 一些方法(比如 get_context_data)在子类中来提供一些新的值或者方 法。...Django有一个通用视图来完成这个功能 - TemplateView - 因此可以子类化它,然后重写模板的名称: from django.views.generic import TemplateView...IndexView urlpatterns = [ path('index/', IndexView.as_view()), ] 作为一个选择,如果仅仅修改类视图中少量简单的属性,可以直接传递新的属性到类本身调用
开发思路 开发一个功能的基本思路是:先新建应用,然后分析功能涉及到哪些业务,从而分析出需要的数据库字段,然后编写模型,之后就是展示阶段,通过url路由配置视图函数,来将模型里面的数据显示出来。...,可以传一些额外内容到模板。...因此我们可以使用该函数来传递分类数据。 要使用它,很简单。 只需要在IndexView类下面,追加get_context_data()的实现即可。...在前面我们已经写过get_context_data了,该函数的主要功能就是传递额外的数据给模板。这里,我们就利用get_context_data来传递页码数据。...当数据传递给模板之后,模板就负责显示出来就行了。 因为分页功能比较常用,所以需要把它单独拿出来封装到一个单独的文件中,我们新建templates/base/page_nav.html文件。
Django源码学习-8-ListView&DetailView通用视图 ?...Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...ListView的自定义,还可以通过重写get_context_data方法传递额外的参数或内容。...() 可以添加额外的模板 context , 默认将 model / queryset 指定的 objects 添加到模板 context get_queryset() 默认返回属性 queryset...(**kwargs) # Add in the publisher context['publisher'] = self.publisher # 将 publisher
import HomePageView urlpatterns = [ path('', HomePageView.as_view(), name='home'), ] 如果在模版中不需要传递任何参数...template_name:指定这个列表的模板。 paginate_by:指定这个列表一页中展示多少条数据。 context_object_name:指定这个列表模型在模板中的参数名称。...get_context_data:获取上下文的数据。 get_queryset:如果你提取数据的时候,并不是要把所有数据都返回,那么你可以重写这个方法。将一些不需要展示的数据给过滤掉。...他们在Django中的路径为django.core.paginator.Paginator和django.core.paginator.Page。...start_index:当前这一页的第一条数据的索引值。 end_index:当前这一页的最后一条数据的索引值。 3.3 示例分页代码 <!
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...Title'}) 方法 get_context_data(** kwargs) 返回表示模板上下文的字典。...提供的关键字参数将构成返回的上下文。...Mixin 提供数据,View 提供模板和渲染。所以一般get_context_data在Mixin中,get(),post(),head()在View中。...Django中Mixin和View把原来的视图函数中的三个东西分开了,模板(TemplateResponseMixin),上下文数据(ContextMixin),负责将这些联系起来的(View)。
本文将通过拓展 Django Pagination 来实现下图这样比较完善的分页效果。...首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。 于是 Django 把这些相同的逻辑代码抽取了出来,写成了一系列的通用视图函数,即基于类的通用视图。...(self, **kwargs): """ 在视图函数中将模板变量传递给模板是通过给 render 函数传递一个字典实现的 例如 render(request...在类视图中,这个需要传递的模板变量字典是通过 get_context_data 获得的, 所以我们复写该方法,以便我们能够自己再插入一些我们自定义的模板变量进去。...""" # 首先获得父类生成的传递给模板的字典 context = super().get_context_data(**kwargs) # 父类生成的字典中已有
2、从模型创建表单 django对于MVC中的C与M间的映射是非常体贴的,集中体现中Model模型中(比如模型的权限与用户认证)。...比如CreateView就会由django自动的把页面上POST出的form数据解析到model生成的表单(或者form_calss指定的ModelForm类型表单),同时调用表单的save方法将数据添加到模型对应的数据库表中...TemplateResponseMixin提供render_to_response方法将响应通过context上下文在模板上渲染。...ContextMixin在context上下文中加入’view’元素,值为self实例。 ProcessFormView在GET请求上渲染表单,在POST请求上解析form到表单实例。...所以,在用CreateView、一个模型、一个模板实现添加一行记录的功能时是多么简单,因为这些父类会自动生成object,渲染到模板,解析form表单,save到数据库中。
本文将通过拓展 Django Pagination 来实现下图这样比较完善的分页效果。...(self, **kwargs): """ 在视图函数中将模板变量传递给模板是通过给 render 函数的 context 参数传递一个字典实现的, 例如...在类视图中,这个需要传递的模板变量字典是通过 get_context_data 获得的, 所以我们复写该方法,以便我们能够自己再插入一些我们自定义的模板变量进去。...""" # 首先获得父类生成的传递给模板的字典。...context.update(pagination_data) # 将更新后的 context 返回,以便 ListView 使用这个字典中的模板变量去渲染模板。
models.TextField() 再来回顾一下文章详情页的视图,我们在 PostDetailView 中将 post 的 body 字段中的 Markdown 文本渲染成了 HTML 文本,然后传递给模板显示...接着我们便使用该实例的 convert 方法将 post.body 中的 Markdown 文本渲染成 HTML 文本。...md 属性,这就是 Python 动态语言的好处,不然这里还真不知道该怎么把 toc 的值传给模板)。...{{ post.toc }} 显示模板变量的值,注意 post.toc 实际是一段 HTML 代码,我们知道 Django 会对模板中的 HTML 代码进行转义,所以要使用 safe 标签防止 Django...由于通常我们的标题都是中文,Markdown 没法处理,所以它就忽略的标题的值,而是简单地在后面加了个 _1 这样的锚点值。
所有的视图类继承自View类,它负责连接视图到URL、HTTP 方法调度和其它简单的功能。RedirectView用于简单的HTTP 重定向,TemplateView扩展基类来渲染模板。...如果你只是修改基于类的视图的一些简单属性,你可以将它们直接传递给as_view()方法调用: from django.conf.urls import url from django.views.generic...子类化通用视图 第二种,功能更强一点的使用通用视图的方式是继承一个已经存在的视图并在子类中覆盖其属性(例如template_name)或方法(例如get_context_data)以提供新的值或方法。...Django 有一个通用视图TemplateView来做这件事,所以我们可以简单地子类化它,并覆盖模板的名称: # some_app/views.py from django.views.generic...这个API 客户端将随时连接并下载自上次访问以来新出版的书籍的数据。如果没有新的书籍,仍然从数据库中获取书籍、渲染一个完整的响应并发送给客户端将是对CPU 和带宽的浪费。
在success回调中,通过判断user_liked的值来确定自己是否喜欢过,然后改变模板中相应的css。 推荐功能 每个网站都有自己的推荐功能,且都有自己的推荐逻辑。...实现起来非常容易,我们知道详情页实现用的是VideoDetailView,我们可以在get_context_data()中把推荐内容传递给前端模板。...传递给模板。...在接收函数中,通过form自带的验证函数来保存记录,然后将这条记录返回到前端模板。 下面我们开始评论列表的开发。...最后通过render_to_string将html传递给模板。
从本讲起,我们会讲到个人菜单中另外两个比较重要的功能,“我的收藏”与“我的喜欢”。感兴趣的同学可以点击网站的右上角,即可弹出个人菜单,你就能看到“我的收藏”与“我的喜欢”了。...通过学习这两个功能,我们会加深对django中通用视图类的理解与应用。...并分别设置它们的别名为"liked_videos"和"collected_videos",有django基础的同学应该明白,通过别名也可以访问到数据。...并通过配置template_name将数据传递给模板文件users/collect_videos.html。...模板文件关键代码 我的收藏 {% for item in video_list
="/categories/{{ category.id }}">{{ category }} {% endfor %} 运行之后点击分类的超链接就跳到分类页面,分类页面从逻辑上来说就已经实现了...,首先是列表页的模板文件——templates\index.html,代码如下: 到,我在这里直接输入 2,然后点击搜索,最后搜索的结果如图所示。 ?...接下来不用去看都应该知道怎么弄了吧,把这里 css 文件夹下面所有文件复制到项目中的 css 静态文件目录,同时把 js 文件夹中的所有文件复制到项目中的 js 静态文件目录,完成之后项目中静态文件目录如图所示...好,今天就讲到这里,明天我就直接给出修改好的模板文件的源码,同时给出运行的效果。