django-form表单的提交
<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表单的提交的更多相关文章
- django form表单验证
一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...
- Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)
一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...
- Django form表单 组件
目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...
- JavaScript 创建一个 form 表单并提交
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- 使用ajax方法实现form表单的提交(附源码)
写在前面的话 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控制页面的跳转及数据传递,但是在某些时候不希望页面跳转,或者说 ...
- form表单js提交
form表单js提交 $('#form1').submit(); 延迟form表单提交 function submitcheck() { $('#light').css('display', ...
- 微信自带浏览器不支持form表单post提交方案解决
微信自带浏览器form表单post提交,Java控制后台获取不到值得解决方案: 第一种:把post改成get请求,但是改后另一个问题来了就是,数据不安全了,连接上都能看到,导致数据会流失,Java ...
- 利用 ajax自定义Form表单的提交方式
需求场景:有时候单纯的form表单无法向后端传递额外的参数 比如需要action传递js异步生成的参数 ,form表单默认的action就无法满足需求,这时就需要我们自定义form表单的提交方式. h ...
- form表单的提交方式
开发中表单提交是很常见的,表单的提交方式也多种方式. 1.使用submit按钮提交表单 <input type="submit"/> <!DOCTYPE htm ...
- 使用ajax方法实现form表单的提交
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 写在前面的话 在使用form表单的时候,一旦点击提交触发submit ...
随机推荐
- F - 蜘蛛牌(深度搜索)
Problem Description 蜘蛛牌是windows xp操作系统自带的一款纸牌游戏,游戏规则是这样的:只能将牌拖到比她大一的牌上面(A最小,K最大),如果拖动的牌上有按顺序排好的牌时,那么 ...
- Quiz 6b Question 8————An Introduction to Interactive Programming in Python
Question 8 We can use loops to simulate natural processes over time. Write a program that calcula ...
- jquery 动态增加的html元素,初始化设置在id或class上的事件无效
一般情况,我们会在页面初始化完成后对class定义一些全局事件,举个栗子: $(document).ready(function(){ $(".class").on("m ...
- Regex阅读笔记(一)之入门
在检查一行文本时,^代表一行的开始,$代表结束. 字符数组:[],在里面列举任意多个字符,可以匹配其中任意一个字符,字符组元字符'-'表示一个范围. ^$表示一个空行(没有任何字符,包括空白字符) [ ...
- 在verilog中关于inout口的设计方法
在学习IIC的时候我们知道这么设计inout inout scl : reg scl_reg , scl_en ; scl = scl_en ? scl_reg : 1'dz ; 当 ...
- nginx自动切割访问日志
Web 访问日志 (access_log) 记录了所有外部客户端对Web服务器的访问行为,包含了客户端IP,访问日期,访问的URL资源,服务器返回的HTTP状态码等重要信息. 一条典型的Web访问日志 ...
- STL assign 和swap
首先看下在整个container上面的复制. c1=c2 可以等同于 c1.erase(c1.begin(),c1.end()) //delete all elems in c1 c1.insert( ...
- Web调试利器fiddler使用
fiddler官网:http://fiddler2.com/ http://wenku.baidu.com/view/053e79d776a20029bd642dc1 http://www.cnblo ...
- eclipse @ 注释为何一写就报错
以前一直奇怪,为什么eclipse自动生成的的代码中的@注释不会报错,而我直接写@就会报错 原因其实很简单: eclipse会检查@注释的位置 举个例子:写@Override,直接写会报错,但如果你继 ...
- CodeForces - 27E--Number With The Given Amount Of Divisors(反素数)
CodeForces - 27E Number With The Given Amount Of Divisors Submit Status Description Given the number ...