不使用Django表单类清理输入字符串
有没有推荐的方法可以在不使用Django表单系统的情况下清理输入字符串?
也就是说,我正在写代码,通过AJAX发送表单输入,所以我跳过了Django提供的整个表单模型。但是,我确实想在提交到数据库之前清理输入。
1 个回答
16
Django的表单模型不仅仅是用来显示表单的,它们更重要的是处理和清理表单(GET/POST)输入,这正是你想要做的。当你的AJAX请求的POST或GET数据到达服务器时,它和普通表单数据几乎没有区别。我建议你创建一个表单模型,来代表你的AJAX请求。
举个例子,假设有一个POST请求:
POST /login.jsp HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0
Content-Length: 27
Content-Type: application/x-www-form-urlencoded
userid=joe&password=guessme
这个请求可能是来自AJAX请求,也可能是来自一个表单,但一旦到达你的服务器,实际上并没有太大区别!虽然它们叫做表单模型,因为通常GET或POST数据都是来自表单,但其实不一定非得是表单才行 :)
如果你创建一个表单模型来表示你的AJAX请求,你就能得到所有的处理和清理功能,这样一来就更符合Django的风格了。
关于你的评论的更新:
我想你会有多个表单类。显然,我不知道你的系统是怎么设计的,但我会尽量提供一些建议。
正如你所说,你会用这个来清理数据,所以你需要根据你发送的数据来定义你的表单类。例如,如果我有一个AJAX请求,它提交了一个包含姓名、邮箱和评论内容的数据,这就可以是一个表单类。如果我还有另一个AJAX请求,它发布了一篇新文章,发送了标题、作者和文章内容,那就可以是另一个表单类。
并不是所有的AJAX请求都需要一个表单,如果你有一个AJAX调用是用来给评论投票的,你可能就不需要把它当作一个表单,因为(我猜)你不需要清理任何数据。