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

django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单

使用基于类的视图处理表单 表单的处理通常有3 个步骤: 初始的的GET (空白或预填充的表单) 带有非法数据的POST(通常重新显示表单和错误信息) 带有合法数据的POST(处理数据并重定向) 你自己实现这些功能经常导致许多重复的样本代码...模型的表单 通用视图在于模型一起工作时会真正光芒四射。这些通用的视图将自动创建一个ModelForm,只要它们能知道使用哪一个模型类: 如果给出model属性,则使用该模型类。...如果get_object() 返回一个对象,则使用该对象的类。 如果给出queryset,则使用该查询集的模型。 模型表单提供一个form_valid() 的实现,它自动保存模型。...你甚至不需要为CreateView 和UpdateView提供success_url —— 如果存在它们将使用模型对象的get_absolute_url()。...Changed in Django 1.8: 省略fields 属性在以前是允许的,但是导致表单带有模型的所有字段。

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

    使用AJAX获取Django后端数据

    现在,我们可以通过其键访问数据。 一旦获得了请求中的数据,我们就可以执行用户希望启动AJAX请求的操作。这可能是创建模型的新实例或更新现有实例。...与GET请求一样,可以使用JsonResponse和带有数据的字典将数据发送回页面。这可以是新的或更新的模型对象,也可以是成功消息。...Django 3.1及更高版本 在即将发布的Django3.1版本(2020年8月)中,request.is_ajax()将被弃用。 这意味着如果我们要检查AJAX请求,则必须自己重新创建功能。...如果发现自己在多个模板中使用它们来获取大量数据,请考虑使用Django Rest Framework创建API。...总结 通过在Django项目中使用AJAX请求,我们可以更改页面的某些部分而无需重新加载整个页面。提取API使添加此功能相当轻松,同时需要最少的JavaScript。

    7.6K40

    基于django的视频点播网站开发-step5-详情页功能

    我们将会学习到通用视图类DetailView的使用、评论动态加载、以及如何通过ajax实现喜欢和收藏功能,并通过一段段很酷的代码来说明这些功能。 效果展示 [1686a2d95fc23bde?...另外,网站还实现了评论功能,通过上拉网页即可分页加载评论列表,用户还能添加评论。网页侧栏是推荐视频列表,这里使用的推荐逻辑比较简单,就是推荐观看次数最多的视频。...JsonResponse({"code": 0, "likes": video.count_likers(), "user_liked": video.user_liked(user)}) 首先判断用户是否登录,如果登录了则调用...评论列表部分,我们使用了的是上拉动态加载的方案,即当页面拉到最下侧时,js加载代码会自动的获取下一页的数据并显示出来。前端部分,我们使用了一种基于js的开源加载插件。...基于这个插件,可以很容易实现网页的上拉动态加载效果。它使用超级简单,仅需要调用$('.comments').dropload({})即可。

    2.2K30

    EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型

    view=aspnetcore-2.1 使用EF CodeFirst在MySql中创建新的数据库,我们首先在appsettings.json文件夹中,使用json对来给出mysql数据库连接语句,其次在...新建一个类,用来做数据表的基类,同是派生一个继承自DbContext的数据库上下文类,注意!这个新的数据库上下文一定要有构造函数。...做好之后,使用如下命令创建新的数据库: 首先打开Nuget管理控制台: Add-Migration xxxx Update-Database 如果我们就生成了数据库了,还会给我们生成一个Migration...那么如果有了数据库怎么使用DbContext呢? 从现有的MySql数据库中使用DB First来创建数据表模型 在这种方案下,我们只需要引入第三方的mysql数据库驱动就可以。...=localhost;uid=root;pwd=123456;database=eftests" "Pomelo.EntityFrameworkCore.Mysql" -o Models 项目少还好,如果项目数据库里的表多

    44820

    Django数据库查询优化与AJAX

    :模型层、模板层、视图层 Django自称是MTV框架,其实本质还是MCV MCV(models views controllar) models views controllar:模型层、视图层、控制层...我们可以用0、1等数字代表男女等字段可能的情况,将数字存入表中(可以是数字也可以是字符串,通常用-1表示数据短缺或者数据丢失),取出的时候如果存储的数字在提前定义好的关系中会,则会取出对应关系的字符串,...如果没有对应关系,取出的还是数字。...(重要) AJAX简介 AJAX(Asynchronous Javascript And XML)“异步的Javascript和XML”,即使用Javascript语言与服务器进行异步交互,传输的数据为...AJAX 不是新的编程语言,而是一种使用现有标准的新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

    2.4K20

    django 1.8 官方文档翻译: 2-3-1 模型实例参考

    _deferred来检查是否提供所有的字段 —— 如果为 False,那么所有的字段都已经从数据库中加载。...如果你需要从数据库重新加载模型的一个值,你可以使用 refresh_from_db() 方法。当不带参数调用这个方法时,将完成以下的动作: 模型的所有非延迟字段都更新成数据库中的当前值。...其它依赖数据库的值不会重新加载,例如聚合的结果。 重新加载使用的数据库与实例加载时使用的数据库相同,如果实例不是从数据库加载的则使用默认的数据库。可以使用using 参数来强制指定重新加载的数据库。...如果你手工赋值一个自增主键的值,请确保不要使用一个已经存在的主键值!如果你使用数据库中已经存在的主键值创建一个新的对象,Django 将假设你正在修改这个已存在的记录而不是创建一个新的记录。...如果对象的主键属性没有设置或者UPDATE 没有更新任何记录,Django 将执行INSERT。 现在应该明白了,当保存一个新的对象时,如果不能保证主键的值没有使用,你应该注意不要显式指定主键值。

    1.9K10

    Django评论库

    这些需要使用django_comments的模版标签,在使用标签之前导入加载: {# 导入评论库模块的模版标签 #} {% load comments %} 评论列表可以通过django_comments...变量得到的评论加载即可。 而评论提交表单,最主要的是提交的url和表单字段。...同样也可以通过django_comments的模版标签处理,如下代码: 新的评论 {% get_comment_form for blog as blog_form %} ajax写评论提交事件避免避免跳转到独立的评论页面,修正时间戳等Bug。 Django的评论库如果填写不完整,或者提交出错,就会跑到自带的页面。 关键是自带的评论页面超级不好看。...为Comments添加Ajax功能,免得提交出错跳到自带的评论页面。 具体可参考django 简易博客开发 4 comments库使用及ajax支持提交前,先在本地验证是否填写。

    1K21

    Django之QuerySet详解

    db:如果现在执行,则返回使用的数据库。 三、返回新QuerySets的API 以下的方法都将返回一个新的QuerySets。重点是加粗的几个API,其它的使用场景很少。...若要按照另外一个模型中的字段排序,可以使用查询关联模型的语法。即通过字段的名称后面跟两个下划线(__),再加上新模型中的字段的名称,直到希望连接的模型。...像这样: Entry.objects.order_by('blog__name', 'headline') 如果排序的字段与另外一个模型关联,Django将使用关联的模型的默认排序,或者如果没有指定Meta.ordering...当最初获取数据时不知道是否需要这些特定字段的情况下,如果正在使用查询集的结果,可以告诉Django不要从数据库中检索它们。...),如果该对象不存在则创建一个新对象。

    2.4K20

    Python 面试题大全系列(四)

    DDL(数据定义语言) CREATE DATABASE - 创建新数据库 ALTER DATABASE - 修改数据库 CREATE TABLE - 创建新表 ALTER TABLE - 变更(改变)...= 等 如果 mysql 估计使用全表扫描要比使用索引快,则不使用索引 14....实现一个简单的 AJAX 请求 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。...如果两个页面的协议,端口(如果有指定)和主机都相同,则两个页面具有相同的源。我们也可以把它称为“协议/主机/端口 tuple”,或简单地叫做“tuple"....Django 中的 MTV 模式:Model(模型):负责业务对象与数据库的对象(ORM),Template(模版):负责如何把页面展示给用户,View(视图):负责业务逻辑,并在适当的时候调用 Model

    67730

    autocomplete light配置xadmin使用时一记小坑

    说句题外话,默认情况下的django admin或者是xadmin,在外键字段的渲染上都是一个坑。当外键的数量过大,那页面的加载速度真是“杠杠滴”。...出错现象 先说下版本:xadmin-0.6.1 autocomplete light-3.2.10 错误提示: Uncaught Error: Option 'ajax' is not allowed...课程中有讲过INSTALLED_APPS的顺序会导致同名资源的加载顺序,测试了下发现不是同名资源。那么就是另外的问题。...继续说回到问题,我们知道Django的渲染出来的资源是依据这个model或者modelform定义的field中的widget,那么对于我们遇到的问题 —— js资源的加载顺序,原因就是字段的加载顺序。...总结 最终其实发现这个同学的form和adminx的代码跟我的一样,但是model中字段定义的顺序不同,所以导致这个问题。不过对于遇到这样问题的同学来说,如果能搞明白原因,是很有帮助的。

    94120

    【Django】QuerySet以及Pickle 序列化在Django中的深度运用详解

    但是,如果使用切片语法的step参数,Django将执行数据库查询并返回一个列表。对执行的QuerySet进行切片也会返回一个列表。...Django为此提供了count()方法。 Pickle 序列化 QuerySet 如果pickle以序列化QuerySet,这将强制在pickle序列化之前将所有结果加载到内存中。...数据库 如果现在执行此查询,将使用数据库。 SELECT ......Django提供的聚合函数在以下聚合函数中进行了描述。 使用关键字参数指定的注释使用关键字作为注释的别名。匿名参数将根据聚合函数的名称和聚合模型字段为其生成别名。...如果QuerySet以任何方式排序,则此属性为true。 每个order_by()调用清除以前的排序。

    1.8K10

    四、其它(一)ModelAdmin对象InlineModelAdmin对象重写admin模板Paginator对象Page对象示例

    列表类型 在列表中,可以是字段名称,也可以是方法名称,但是方法名称默认不能排序 在方法中可以使用format_html()输出html内容 在models.py文件中 from django.db import...search_fields = ['hname'] 增加与修改页选项 fields:显示字段的顺序,如果使用元组表示显示到一行上 class HeroAdmin(admin.ModelAdmin):...提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返回分页对象,参数为列表数据,每面数据的条数 属性...Ajax 使用视图通过上下文向模板中传递数据,需要先加载完成模板的静态页面,再执行模型代码,生成最张的html,返回给浏览器,这个过程将页面与数据集成到了一起,扩展性差 改进方案:通过ajax的方式获取数据...,通过dom操作将数据呈现到界面上 推荐使用框架的ajax相关方法,不要使用XMLHttpRequest对象,因为操作麻烦且不容易查错 jquery框架中提供了$.ajax、$.get、$.post方法

    4.5K20

    为什么使用makemigrations提示No changes detected

    我们在使用Django创建工程的时候都使用makemigrations、migrate来生成最初的数据库模型,但是到最后都是直接在数据库中手动创建表,为什么呢?...对比2、3中生成的模型字段,如果有变化就在对应APP的migrations目录下生成新的.py文件 migrate 执行migrate命令的时候,执行流程如下: 根据注册的APP,获取所有APP下的migrations...contenttypes 0001_initial 2019-09-08 09:48:47.040754 2 Course 0001_initial 2019-09-08 09:52:23.045994 检测表中所记录的数据模型加载的迁移文件与实际...migrations目录下的文件是否相匹配,如果全都加载过,则不执行;如果有未加载的,就执行数据库命令 结论 通过以上分析得出以下结论: app下必须有migrations文件夹,即使是空的(必须有、必须有...,是否对应的文件以及执行过迁移 如果想重新执行迁移,例如migrations下有0002_initial.py文件,django_migrations中也包含对应记录,则删除django_migrations

    6.3K30

    Django模型model

    定义模型类 在模型中定义属性,会生成数据库表中的字段 django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django...会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则django不会再生成默认的主键列 属性命名限制 不能是python的保留关键字 由于django的查询方式,不允许使用连续的下划线...模型类中字段选项 通过字段选项,可以实现对字段的约束 在字段对象时通过关键字参数指定 null:如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False blank:如果为True...,则该字段允许为空白,默认值是 False 对比:null是数据库范畴的概念,blank是表单验证证范畴的 db_column:字段的名称,如果未指定,则使用属性的名称 db_index:若值为 True...的一般用法: count = list.count() (3)F对象 可以使用模型的字段A与字段B进行比较,如果A写在了等号的左边,则B出现在等号的右边,需要通过F对象构造 list.filter

    15310

    Django 1.10中文文档-第一个应用Part2-模型和管理站点

    默认值是os.path.join(BASE_DIR, 'db.sqlite3'),它将文件保存在你项目的目录中; 如果不使用SQLite作为数据库,则必须添加其他设置,例如USER,PASSWORD...每个模型由一个子类django.db.models.Model的类表示。每个模型都有一些类变量,每个变量表示模型中的数据库字段。...您可以使用字段的可选第一个位置参数来指定一个更通俗的名称。这在Django的一些内省部分中使用,它也可以作为文档。如果不提供此字段,Django将使用机器可读的名称。...如果愿意,你可以阅读这些为新模型建立的迁移文件;这个迁移文件就是polls/migrations/0001_initial.py。...就是使你的数据库模式和你改动后的模型进行同步。 迁移功能非常强大,可以让你在开发过程中不断修改你的模型而不用删除数据库或者表然后再重新生成一个新的 —— 它专注于升级你的数据库且不丢失数据。

    2.3K60

    Django 学习笔记之模型高级用法(下)

    默认按升序排列,如果在字段名前加上字符“-”则表示按降序排列,如果使用字符问号“?”表示随机排列。...verbose_name:给模型设置别名。如果不指定它,Django 会使用小写的模型名作为默认值。...2)多表继承 这种方式继承方式,子模型的父模型可以一个或者多个。 当父类模型是正常的模型,即不是抽象模型,在数据库中有对应表。...虽然在 Model 层不推荐使用多重继承,但 Django 的 ORM 还是支持这样的使用方式。如果使用多表继承,子模型跟每个父模型都会添加一个一对一的关系。...3)代理模型 使用多表继承时,父类的每个子类都会创建一张新数据表。但是我们只是想扩展一些方法,而不想改变模型的数据存储结构。我们可以将在 Meta 类中增加约束 proxy=True 来实现。

    1.8K20

    Django开发快速入门

    如果不包括句点,则Django默认会创建一个附加目录。 (library)$ django-admin startproject library_project ....我们总是在底部添加新应用,因为Django会按顺序读取它们,并且我们希望内置的核心Django应用(例如admin和auth)在加载我们的应用之前已经被加载。...由于我们创建了一个新的数据库模型,因此我们需要创建一个迁移文件来进行处理。 指定应用名称是可选的,但建议在此处使用。...Admin 我们可以开始通过内置的Django应用将数据输入到我们的新模型中。 但是我们必须首先做两件事: 创建一个超级用户帐户并更新admin.py,以便显示books应用程序。...然后显示模型中的每个字段。 网页 现在,我们可以启动本地Django服务器并查看我们的网页。

    2.3K41

    零基础使用Django2.0.1打造在线教育网站(十七):我要学习配置

    配置我要学习 这就是我要学习的页面,它是通过Ajax来控制的,也就是异步的javascript和xml。它可以在保证当前页面不被重新刷新的条件下,提交表单向后台传送数据。...我们可以利用Django自带的ModelForm,这比form强大多了,除了继承现有的字段还可以新增字段!...配置 前面说到我要学习的页面,它是通过Ajax来控制的,是一种异步加载方式,所以我们此时不能在view里面直接render一个页面回来,应该是给前端返回json数据,而不是页面。...user_ask = userask_form.save(commit=True) # 如果保存成功,则返回json,不过后面必须有content_type...我们是通过监听id为jsStayBtn的按钮来实现对数据的控制,当用户点击了这个按钮,就会触发url跳转,如果成功则继续调用data函数,它有两个状态:成功和失败,分别对应不同的提示信息。

    72410
    领券