将 index 视图函数改写为类视图 针对这种从数据库中获取某个模型列表数据(比如这里的 Post 列表)的视图,Django 专门提供了一个 ListView 类视图。...() 从数据库中获取文章(Post)列表数据,并将其保存到 post_list 变量中。...将获得的模型数据列表保存到 post_list 里,即指定 context_object_name = 'post_list'。...在 Django 中 URL 模式的配置方式就是通过 url 函数将 URL 和视图函数绑定。...DetailView 除了从数据库中获取模型列表的数据外,从数据库获取模型的一条记录数据也是常见的需求。比如查看某篇文章的详情,就是从数据库中获取这篇文章的记录然后渲染模板。
用于添加新条目的表单 我们需要创建一个与模型Entry相关联的表单,但这个表单的定制程度比TopicForm要高些: forms.py from django import forms from...P\d+)捕获一个数字值,并将其存储在变量topic_id中。请 求的URL与这个模式匹配时,Django将请求和主题ID发送给函数new_entry()。 3....new_entry()的定义包含形参 topic_id,用于存储从URL中获得的值。...我们将new_entry的属性topic设置为在这个 函数开头从数据库中获取的主题(见6),然后调用save(),且不指定任何实参。这将把条目保 存到数据库,并将其与正确的主题相关联。...表单的实参action包含URL中的topic_id值,让视图函数能够将新条目关联到正确的主题(见 2)。除此之外,这个模板与模板new_topic.html完全相同。 5.
用户注册就是创建用户对象,将用户的个人信息保存到数据库里。回顾一下 Django 的 MVT 经典开发流程,对用户注册功能来说,首先创建用户模型(M),这一步我们已经完成了。...User 模型,从它的源码中可以看出: class UserCreationForm(forms.ModelForm): ......用户在注册表单里填写注册信息,然后通过表单将这些信息提交给服务器。视图函数从用户提交的数据提取用户的注册信息,然后验证这些数据的合法性。...对表单 form(这是一个模板变量,是 RegisterForm 的一个实例,我们在 register 视图函数中将它传递给模板的。)...可以去 Django Admin 后台看看是否有用户新注册的数据。为了在 Admin 后台查看用户数据,首先需要注册用户模型。
在视图函数中 from django.shortcuts import render return render(request,'模板文件名',字典数据) 视图层与模板层之间的交互 视图函数中可以将Python...,用path定义的别名来动态查找或计算出相应的路由。...名称+类名称小写 模型类-字段类型: BooleanField 数据库类型:tinyint(1) 编程语言中将使用True或False来表示值 在数据库中则使用0或1来表示具体的值 Char...字典 分组聚合 其实是为了实现Having语句 通过计算查询结果中每一个对象所关联的对象集合,从而得出总计值,为查询集的每一项生成聚合 QuerySet.annotate(结果变量名(别名)=聚合函数...)) wife = Wife.objects.create(name=’王夫人’,author_id = 1(类属性字段绑值)) 一对一查询 正向查询:从外键查对象 反向查询:从对象查外键 调用反向属性查询到关联的一方
path() argument: view 当 Django 找到匹配的模式时,它调用指定的视图函数,第一个参数是 HttpRequest 对象,从路由中“捕获”的任何值都是关键字参数。...path() argument: kwargs 可以在字典中将任意关键字参数传递给目标视图。在本教程中,我们不会使用 Django 的此功能。...path() argument: name 通过命名 URL,您可以从 Django 的其他地方明确地引用它,特别是在模板中。...为了从 URL 到视图,Django 使用了所谓的“**URLconfs**”。URLconf 将 URL 模式映射到视图。...由于 app_directory 模板加载器的工作方式如上所述,您可以在 Django 中将这个模板引用为 poll /index.html。
在 admin 后台注册模型 要在后台注册我们自己创建的几个模型,这样 django admin 才能知道它们的存在,注册非常简单,只需要在 blog\admin.py 中加入下面的代码: blog/admin.py...在支持 Markdown 语法部分中将介绍如何在文章中插入图片的方法。...首先,Model 中定义的每个 Field 都接收一个 default 关键字参数,这个参数的含义是,如果将 model 的实例保存到数据库时,对应的 Field 没有设置值,那么 django 会取这个...default 指定的默认值,将其保存到数据库。...所以这里问题的关键是每次保存模型时,都应该修改 modified_time 的值。每一个 Model 都有一个 save 方法,这个方法包含了将 model 数据保存到数据库中的逻辑。
一、Django处理文件上传File Uploads 在文件上传期间,实际文件数据存储在request.FILES中。...实现文件上传并且保存到指定路径下,其实并不困难,可以不需要用到django的forms,也不需要django的models,就可以简单实现上传功能。...图片上传到数据库并调用显示 在models.py中,需要建立模型,这里使用了ImageField字段,用来存储图片路径,这个字段继承了FileField字段,本质上是一样的。...在app下admin.py中将需要上面创建的模型进行添加。...img = Test.objects.all() return render(request, 'home.html', {'img':img}) 在视图函数中加入,上面两句。
date_joined django.contrib.auth.models,在django.db.models之上封装了AbstractBaseUser、AbstractUser、User等模型。...创建用户 方法1 代码创建 在代码中使用create_user()函数来创建用户: >>> from django.contrib.auth.models import User # 创建用户并保存到数据库...授权 可以在管理后台对用户授权: image.png 或者把用户分组后,按组来进行授权: image.png 从数据库这6张表就能看出来,有用户表、分组表、权限表,以及它们的关联关系表: image.png...代理模型权限 代理模型是从某个模型继承来的,不影响表结构,用于扩展行为实现代码解耦。...认证视图 Django提供了登录、登出、密码管理等视图。
2)设计模型(M) 这里的模型只包括了两个属性:用户名(即谁上传了该文件);文件名。...通常,如果上传文件小于2.5MB,Django会把整个内容存到内存。这意味着,文件的保存仅仅涉及到从内存读取和写到磁盘,所以非常快。...处理大文件时这会非常有用,因为这样可以把他们从磁盘中读取出来,而避免将整个文件存到内存中。...直接上代码: 在models.py中,需要建立模型,这里使用了ImageField字段,用来存储图片路径,这个字段继承了FileField字段,本质上是一样的。...在app下admin.py中将需要上面创建的模型进行添加。
date_joined django.contrib.auth.models,在django.db.models之上封装了AbstractBaseUser、AbstractUser、User等模型。...创建用户 方法1 代码创建 在代码中使用create_user()函数来创建用户: >>> from django.contrib.auth.models import User # 创建用户并保存到数据库...授权 可以在管理后台对用户授权: [image-20201210132644755.png] 或者把用户分组后,按组来进行授权: [image-20201210152354130.png] 从数据库这6...代理模型权限 代理模型是从某个模型继承来的,不影响表结构,用于扩展行为实现代码解耦。...认证视图 Django提供了登录、登出、密码管理等视图。
现在,创建一个Django视图来处理提交的数据,在Part3中已经创建了一个URLconf ,包含这一行: # polls/urls.py url(r'^(?...注: views()视图的代码确实有一个小问题。它首先从数据库中获取selected_choice对象,计算新的投票数值然后将其保写回数据库。...这里使用两个通用视图:ListView和DetailView。这两个视图分别代表“显示对象列表”和“显示特定类型对象的详细信息页面”的抽象概念。 每个通用视图需要知道它将作用于哪个模型。...而对于DetailView,question变量会被自动提供,因为我们使用了Django的模型(Question),Django会智能的选择合适的上下文变量。...快速通道 Django 1.10中文文档-第一个应用Part1-请求与响应 Django 1.10中文文档-第一个应用Part2-模型和管理站点 Django 1.10中文文档-第一个应用
Django源码学习-10-Minin 基础类 ?...Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...所有的视图相关代码,均存放在 django/views/generic 目录中: from django.views.generic import View ?...从逻辑上来看,源代码被组织为抽象基类,工具类(Mixin),常规(具体)实现和基于模型的实现。 ?...model 关联的模型类。 paginated_by 分页的每页数据项数。默认不起用分页。 contextobjectname 保存到context中的对象名称。默认是$(model)_list。
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...在Django中view层起到的作用是相当于controller的角色,在view中实施的 动作,一般是取得请求参数,再从model中得到数据,再通过数据创建模板,返回相应 响应对象。...Django中将视图定义为一种函数,称其为视图函数(view function)。...当Django框架接收到http请求的时候,从定义的urlpatterns中寻找url表达式进行匹配,一旦找到匹配的项,就将HTTPRequest以及匹配到的其他字符串作为参数,调用找到的视图函数,然后根据视图函数返回的...① 在视图函数中使用模板 视图函数返回的response对象中包含一些头(Header)信息和内容(Content),通常通过模板来生成内容。
每次用户请求页面时,Web服务器都会进行各种计算 – 从数据库查询到模板呈现再到业务逻辑 – 以创建站点访问者看到的页面。从处理开销的角度来看,这比标准的文件读取文件系统服务器要耗时多了。...缓存某些内容是为了保存昂贵计算的结果,这样就不必在下次执行计算。 Django框架带有一个强大的缓存系统,可以保存动态页面,因此不必为每个请求计算它们。...django应用redis缓存 django中安装第三方库,使用如下命令 pip3 install django-redis 1.settings配置 首先,我们在settings.py中配置如下代码...值,GMT时间 设置响应的Cache-Control的max-age,值是定义的CACHE_MIDDLEWARE_SECONDS值。...中指定视图缓存,而不是在视图函数上硬编码装饰器,可以进一步解耦缓存和视图函数之间的关系,使用起来更灵活 from django.views.decorators.cache import cache_page
前面讲了《环境及项目搭建》《数据模型》,这部分我们终于可以看到些真实的东西了,而不是数据...数据...数据......创建 django 视图 普通视图 1.首先在应用文件夹下创建 urls.py 文件,用来配置视图的 url,然后我们需要在项目下的 urls.py 文件中将该应用的 urls 配置进去 # 在项目下...('blog.urls', namespace="blog")), ] 2.在应用文件夹下的 views.py 文件中加入视图 from django.http import HttpResponse...def index(request): return HttpResponse("Hello django") 3.在应用下的 urls.py 文件中将视图文件配置进去 from django.conf.urls...使用模版创建视图 1.首先在项目根目录下创建 templates 文件夹,用来放视图模版,然后在项目下的 settings.py 文件中注册 templates 文件夹,使 django 能够在 templates
这些内容相对比较固定,且在各个页面都会显示,如果像文章列表或者文章详情一样,从视图函数中获取然后传递给模板,则每个页面对应的视图函数里都要写一段获取这些内容的代码,这会导致很多重复代码。...首页视图函数中从数据库获取文章列表并保存到 post_list 变量,然后把这个 post_list 变量传给模板,模板使用 for 模板标签循环这个文章列表变量,从而展示一篇篇文章。...这里唯一的不同是我们从数据库获取文章列表的操作不是在视图函数中进行,而是在模板中通过自定义的 {% get_recent_posts %} 模板标签进行。...两个括号括起来的地方是两个命名组参数,Django 会从用户访问的 URL 中自动提取这两个参数的值,然后传递给其对应的视图函数。...也就是被访问的分类的 id 值)从数据库中获取到这个分类。
下面再谈一下MVT模型: M:Model,模型,和MVC中的M功能相同,和数据库进行交互。 V:View,视图,和MVC中的C功能相同,接收请求,进行处理,与M和T进行交互,返回应答。...2.View视图,接收到用户发来的注册数据,View告诉Model将用户的注册信息保存进数据库。 3.Model层将用户的注册信息保存到数据库中。 4.数据库将保存的结果返回给Model。...# Q(属性名__运算符=值) from django.db.models import Q # 查询阅读量大于20,或编号小于3的文章,只能使用Q对象实现 XiaoYanBiJi.objects.filter..._id note.xiaoyanbiji_id # 由多模型类条件查询一模型类数据 关联模型类名小写__属性名__条件运算符=值 # 如果没有“__运算符”部分,表示等于 # 查询文章,要求文章的作者为小闫同学...一模型类关联属性名__一模型类属性名__条件运算符=值 # 如果没有"__运算符"部分,表示等于 # 查询文章名为“Django”的所有作者 EthanYan.objects.filter(xiaoyanbiji_btitle
注意这里注册的是 CommentsConfig 类,在 博客从“裸奔”到“有皮肤”[1] 中曾经讲过如何对应用做一些初始化配置,例如让 blog 应用在 django 的 admin 后台显示中文名字。...此外,在 博客从“裸奔”到“有皮肤”[3] 中提过,所有模型的字段都接受一个 verbose_name 参数(大部分是第一个位置参数),django 在根据模型的定义自动生成表单时,会使用这个参数的值作为表单字段的...注册评论模型到 admin 既然已经创建了模型,我们就可以将它注册到 django admin 后台,方便管理员用户对评论进行管理,如何注册 admin 以及美化在 博客从“裸奔”到“有皮肤”[4]...我们知道每一个 URL 对应着一个 django 的视图函数,于是 django 调用这个视图函数,我们在视图函数中写上处理用户通过表单提交上来的数据的代码,比如验证数据的合法性并且保存数据到数据库中,...两个地方需要发送消息,第一个是当评论成功,即评论数据成功保存到数据库后,因此在 comment 视图中加一句。
例:将前端传递的数据保存到模型对象中的过程,叫做反序列化过程。 2.2RestAPI接口核心的工作: 把数据库数据序列化为前端所需要的格式,并返回。...把前端发送的数据反序列化为模型类对象,并保存到数据库中。...model = BookInfo # 指定需要模型类中哪些字段,__all__代表所有 fields = '__all__' model 指明该序列化器处理的数据字段从模型类...编写视图 在booktest应用的views.py中创建视图BookInfoViewSet,这是一个视图集合。...default 我们在使用序列化和反序列化时使用的默认值 allow_null 表明该字段是否允许传入None,默认False help_text、label_text 可以理解为注释,在web直观显示的时候有一个显示信息
领取专属 10元无门槛券
手把手带您无忧上云