【Python-Django圣堂法术】初探表单 -魏泯

今天使用了Python的WEB框架Django进行学习,围绕学习“表单”做了一些程序,于是就有了这份实验报告:
期间我遇到了一些问题,例如:MultiValueDictKeyError at /add/ “‘a’” 这样的错误,并最终弄懂了它是如何运行并解决这个问题。
 
我是从"自强学堂"上找了一些小案例——加减乘除,跟着源码一步一步写然后完成了效果。于是自己重新创建了一个项目开始练习我学习到的知识:
通过request.GET这样的方法获取我前端页面上提交过来的"a"&"b"两个值
(通过form表单,get提交方式)

[views.py]:  #这是它的设计思想
 a = int(request.GET['a'])   #我把他们变成int类型
 b = int(request.GET['b'])
 return HttpResponse(str(a+b))  #这个HttpResponse大家都会用,只接受str参数

HttpResponse是直接将字符串渲染到当前页面,会盖住页面原有的内容。

其实总的来看这非常简单:但是这只是一个开始——在实验步骤上我不太想贴太多代码,免得大家看的繁复,我只提供设计思想。所以接下来我还是得有必要补充一下前端的内容。
我只写了一个前端页面,用于提交表单到后台,但是它的提交地址指向了另一个URL:^add$,所以我写了第二个视图函数——许多关键问题就出现在这里!

[views.py]:
	def add(request):
		if request.method == 'GET':
			a = int(request.GET['a']) 
			b = int(request.GET['b'])
			return HrrpResponse(str(a+b))
		return HttpResponse("Here not a world.")

这并没有什么特别的,只是多了一个步骤:if request.method == 'GET’罢了。
我在想,我通过提交表单的值,跳转到相应URL,执行相关参数的时候,他可以正常显示。那我如果直接输入他的URL——而不传递任何的值呢?

[url:127.0.0.1/add/]:
MultiValueDictKeyError at /add/

"'a'"

Request Method: 	GET
Request URL: 	http://127.0.0.1:8000/add/
...调试界面的错误云云

无非就是系统找不到a = request.GET['a‘] 这一步的值"a"而已,所以无法顺序执行。
你猜怎么着?我写了个异常处理。

[views.py]:
if request.method == 'GET':
        try:
            a = int(request.GET['a'])
            b = int(request.GET['b'])
            return HttpResponse(str(a+b))
        except:
            return HttpResponse('没有值')
return HttpResponse('Here not a world.')

页面上赤裸裸地挂着三个字:没有值。说明了什么?

通过这些尝试我发现我真正进一步领会了页面常用的 “POST"与"GET” 两种请求方法:那就是只要你点开一个页面(可以说是输入一个URL并且按下回车),他默认的请求方法就是GET,不论你是否提交数据。对于它来说,只要你不指定其他的提交方法,if request == ‘GET’ 就始终等于True.
而这就是为什么其实很简单的一个东西我却想了半天,因为if request == 'POST’不总是等于True这样的思想影响到了我,使我觉得,只要我不写(提交方法)他就不会执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python-Django 是一个流行的 Web 开发框架,而多功能 Web 应用渗透测试系统则是指的一个系统能够对各种不同类型的 Web 应用进行渗透测试,同时还具备多种功能。 Python-Django 的优势在于其简单易用、灵活性高以及开发效率高。使用 Python-Django 开发一个多功能 Web 应用渗透测试系统具备以下几个方面的优势: 1. 强大的渗透测试功能:Python-Django 可以实现对 Web 应用中可能存在的漏洞进行渗透测试,比如 SQL 注入、跨站脚本攻击等,提供了一系列的工具和库来实现这些功能。 2. 可扩展性:Python-Django 框架本身就具备良好的可扩展性,可以根据实际需求添加新的功能或模块,满足不同用户的要求。 3. 用户权限管理:Web 应用渗透测试系统需要具备用户权限管理的功能,以便不同用户可以根据其角色进行权限管理和操作。Python-Django 提供了丰富的用户认证和授权机制,可以很方便地实现用户权限管理。 4. 数据库支持:Web 应用渗透测试系统需要对各种渗透测试数据进行存储和管理,Python-Django 提供了对多种数据库的支持,如 MySQL、SQLite、PostgreSQL 等,可以根据实际需要选择合适的数据库。 综上所述,使用 Python-Django 开发一个多功能的 Web 应用渗透测试系统可以实现强大的渗透测试功能,具备良好的可扩展性和用户权限管理,并提供了丰富的数据库支持。这将使得渗透测试人员可以更加高效和便捷地进行各种类型的渗透测试工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值