python3.6-django做一个简单的表单,并向数据库提交信息
一、首先建一个django项目
建一个Blog_demo项目,并在template下新建两个html页面,一个注册页面命名为register,一个欢迎页面命名为welcome
接下来,在这两个页面里分别写非常简单的注册表单,以及欢迎信息,不为好看,仅为能用
此处说明:form表单的传输方式,主要有两种:get和post
简单易懂的解读:get是url请求,post的主体提交;get时账号密码会明文显示出来,post隐式发送;
二、在views视图中,写需要执行的代码:
1.urls分发器:
在总的项目url下写需要分配给下级目录的地址,用到include包
2.app的urls:
初始项目的app文件夹中,是没有urls的文件的,需要自己创建一个python格式的文件,同时注意导入app文件(blog_user)的views包
3.views里写执行代码:
在views里写的register函数,要加request参数,return中也要有这个参数,user为一个虚拟的命名空间
这一组代码环环相扣,此时,你的代码是正确的,但是还不能运行,需要设置一下数据库的内容,你需要先在你的数据库中,创建一个新的库,空的!里面还没有任何表,就像这样:
创建好表之后,就可以开始setting了:
在databases中,设置数据库的信息,我们使用.mysql数据库
好啦!urls的分配和数据库的准备工作都ok啦!
运行一下这个链接吧!
但是有个问题对不对,提交后报错,解决方法:在register表单中,加入一行代码,问题迎刃而解。
{% csrf_token %}
完善:此时仅仅是能跑,但是并没有提交数据,我们在views里完善代码,让程序做个判断,什么时候注册,什么时候注册成功:
并且保存我们的数据,现在models里创建一个表结构
并且,重要的一步一定不能忘了,数据库的映射:运行manage.py(ctrl+alt+R),输入三行代码:
makemigrations blog_user
sqlmigrate blog_user 0001
migrate blog_user 0001
接下来,以创建对象的方式操作数据库,get()中的username和password是取的register里的name=的值,以获取(request)注册的信息,保存为save()。
运行项目并注册信息后,在数据库中看到的数据:第三条和第四条不显示,是因为我输入了相同用户名的数据,会传输失败