<form action="/blog/" method="get">

如果runserver默认启用127.0.0.1:8000的话,且上面这个form是在页面127.0.0.1:8000/test上的表单,则它返回的url为127.0.0.1:8000/blog/,而下面的form返回的url为127.0.0.1:8000/test/blog/,区别是action的值不同。

<form action="blog/" method="post">{%csrf_stoken%}

djangobook2.0中说,在用户浏览表单时,并没有产生post数据,只有submit的时候才产生。

form表单中如果方法是get,则是把提交的信息附加在当前的url中返回。返回的值如果是url,则在当前url中action值添加,再找urlconf中所对应的views.py。如果是文件,则把表单信息返回到其文件中。而post方法,则是在views.py中以request.POST方法来取得表单所提交的信息。

CSRF verification failed错误

通过搜索,大部分给出的解决方法就是添加{%csrf_token%},然后在settings.py中添加上middleware。而网址http://www.qttc.net/201209211.html给出了一个比较全面的解决方法。他的思路值得学习,就是要自己去分析错误,根据错误的提示,找到对应的文档,来获得解决方法,而不是遇到错误就第一时间找百度(因为现在谷歌不好用...)

form框架把每一个field的显示逻辑分离到一个独立的widget中,每一个字段都有默认的widget。理解一下form负责数据校验逻辑,而widget负责显示逻辑。

表单做的第一件事情是把自己显示成一个html。第二件事情是校验数据,form需要绑定,然后校验。每一个字段都有一个对应的错误,所有字段的错误组成了form框架自己的字典表。errors有.is_valid()方法,看是否满足默认的required,还有自定义的clean_方法,相当于附加了自定义的校验条件。form框架先执行valid的默认校验,然后再执行自定义的clean_方法。那么如果满足.is_valid()但是不满足clean_的话,数据库里存的是哪一个数据呢?看文档中要求clean_方法最后一定要返回字段名(field),猜测是存放默认校验后的数据,即使自定义校验不满足,也并不会擦除之前存的数据。需要自己检验一下。第三件事情是数据清理,就是调用.clean_data('字段名')的方法进行数据的清理,取出需要的数据,放进对应的models中。

django-form表单的提交的更多相关文章

  1. django form表单验证

    一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...

  2. Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)

    一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...

  3. Django form表单 组件

    目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...

  4. JavaScript 创建一个 form 表单并提交

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  5. 使用ajax方法实现form表单的提交(附源码)

    写在前面的话 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控制页面的跳转及数据传递,但是在某些时候不希望页面跳转,或者说 ...

  6. form表单js提交

    form表单js提交      $('#form1').submit(); 延迟form表单提交 function submitcheck() { $('#light').css('display', ...

  7. 微信自带浏览器不支持form表单post提交方案解决

      微信自带浏览器form表单post提交,Java控制后台获取不到值得解决方案: 第一种:把post改成get请求,但是改后另一个问题来了就是,数据不安全了,连接上都能看到,导致数据会流失,Java ...

  8. 利用 ajax自定义Form表单的提交方式

    需求场景:有时候单纯的form表单无法向后端传递额外的参数 比如需要action传递js异步生成的参数 ,form表单默认的action就无法满足需求,这时就需要我们自定义form表单的提交方式. h ...

  9. form表单的提交方式

    开发中表单提交是很常见的,表单的提交方式也多种方式. 1.使用submit按钮提交表单  <input type="submit"/> <!DOCTYPE htm ...

  10. 使用ajax方法实现form表单的提交

    作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 写在前面的话 在使用form表单的时候,一旦点击提交触发submit ...

随机推荐

  1. ajax 基础

    <html><head><script type="text/javascript">function showHint(str){var xm ...

  2. java concurrency: daemon线程

    daemon线程的概念 在学习操作系统概念的时候,我们就曾听说过daemon的概念.daemon本身指的是在后台运行的进程或者线程,一般用来提供某些不需要与用户直接交互的服务,有点像我们见到的一些系统 ...

  3. Eclipse之报错信息及其解决方案

    一.有很多人都喜欢开发js的时候用aptana,因此在eclipse中集成aptana插件是必须的,可是,在用link方式在eclipse中安装好aptana后,启动时会报如下错误 An intern ...

  4. box-shadow 被其他div遮住 shadow was hidden/covered by another div

    使用z-index 来处理 (z-index必须在使用了position的情况下才有效) 参考http://stackoverflow.com/questions/5505118/css-box-sh ...

  5. AnyEvent::HTTP 介绍

    AnyEvent::HTTP - simple but non-blocking HTTP/HTTPS client 一个简单的非堵塞的 HTTP/HTTPS 客户端: use AnyEvent::H ...

  6. 物流追踪 - -GPS和GPRS应用

    源码1: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<termios.h ...

  7. 第二种:NSObject

    - (void)viewDidLoad { [super viewDidLoad]; /** * 开启子线程的方式之一:NSObject */ // 第一个参数:selector // 第二个参数:方 ...

  8. switch case ,while, do while,enum

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace C_编辑 ...

  9. android 项目中使用到的网络请求框架以及怎样配置好接口URL

    我们在做项目中一定少不了网络请求,如今非常多公司的网络请求这块好多都是使用一些比較好的开源框架,我项目中使用的是volley,如今讲讲一些volley主要的使用,假设想要具体的了解就要去看它的源代码了 ...

  10. Gradle 1.12 翻译——第十四章. 教程 - 杂七杂八

    有关其它已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或訪问:http://gradledoc.qiniudn.com ...