Django快速入门笔记(2)——get和post是一对好兄弟

有没有人在啊,想请说下,Django快速入门笔记(2)——get和post是一对好兄弟
最新回答
蔓草离离

2025-03-30 01:51:27

写在前面:Python和Django入门刚刚一个月的萌新,编程2年,前端基础0。边学,边做,边写,这份笔记仅作为Django快速入门,包含了很多我自己的理解。里面可能出现的Python语句,仅仅是可以实现其功能,如有更简洁的代码,跪求指出!!

工具:Anaconda 3,Django 1.10,Mysql,notepad

语言:Python,JS,CSS,Jquery,Ajax (都是现学现用,并没有深入研究)

在开始新的学习之前,还是想先花一点功夫梳理下Django的工作流程。

上面这张图主要展示了用户 “打开网页” 这个动作背后的信息流程。

在那之后,我们更关注网页内容和用户的交互,比如,点击一个按钮,选择一个日期,填写一个数字,等等一系列动作,会触发网页的哪些变化。

本篇会在不涉及与数据库交互的前提下,简单介绍交互指令 get 和post 在Django中的应用。预计下一篇会在此基础上学习异步刷新(Ajax)。

接下来的笔记简单!粗暴! 贴源码!以下给出的都是简版的示例,源代码全部检验过可以运行,想要实现更复杂的功能,建议深入研究。

一、get 一个确定按钮

1、编写html文件

‘templates/app001/test1.html’

‘templates/app001/firstpage.html’

想要实现的功能:点击“确定”按钮,运行一段程序,跳转一个页面。

注意:action="/app001/test1/",是指点击按钮后,向服务器传递了一个URL。

2. 编写urls

‘app001/urls.py’

3.编写views

‘app001/views.py’

4.运行服务器

注意比较按钮提交之后,页面URL的变化!!

使用get方式提交,发生了页面的跳转,从app001跳转到了app001/test1/……,这个跳转的地址,我们在action中规定了。

但是后面跟着的一串 ?subject=Submit 这是什么鬼???

为了更好的理解这个问题,我们尝试着用get提交一些文字信息。

二、用 get 打个招呼

1.修改html

‘templates/app001/test1.html’

Urls .py文件不变,这时我们看到页面:

想要实现的效果,提交填写的姓名,运行一段代码,返回一个页面。

2.修改views

‘app001/views.py’

3.运行服务器

现在,让我们回过头看看发生神马。

这个 url 向服务器提交了一个参数。紧跟在问号?后面。这个参数名,在中定义了。

等号=后面是我们通过输入框提交的参数,在views里通过 request.GET.get('name1')获得。

三、用 post 打个招呼

终于轮到get的好兄弟,post 登场了。

1.修改html

‘templates/app001/test1.html’

其中 {% csrf_token %}是出于网站安全性考虑,跨站点伪造请求保护。

另外修改了action地址"/app001"。

2.修改urls

‘app001/urls.py’

修改app001首页与index1的关系

3.新建forms

post请求经常和form一起使用,在提交请求时,检查内容是否符合格式要求。如经常会遇到的要求密码至少含有6位小数,等等。

新建“app001/forms.py”

作为演示,这里未对name1值做特殊要求。

4.修改views

首先,我们检查是否收到post请求,如果未发出,则展示test1界面,不传递变量。

如果收到post请求,则检查收到的参数是否符合form的规范,符合规范,传递变量,刷新页面。

5.运行服务器

注意到,在提交参数前后,app001界面实际上使用的是同一个html。

输入后,

页面的地址并没有发生变化。

四、get 和 post 的区别

最后简单说一下二者最明显的区别:

提交get指令后,页面发生了跳转;而使用post指令,可以仅刷新页面。

get指令利用url传递了参数,post指令并没有改变url。

两者详细的区别,可以参考 HTTP中GET与POST的区别 这篇文章。

好了,今天的笔记就到这里,希望对你有用:)