在不使用django Form类的情况下清理输入字符串

时间:2009-11-08 18:53:12

标签: python django

是否有推荐的方法使用Django清理输入字符串而不通过Django表单系统?

也就是说,我正在编写通过AJAX提供表单输入的代码,所以我正在跳过django提供的整个Form模型。但我确实希望在提交到数据库之前清理输入。

1 个答案:

答案 0 :(得分:16)

Django Form模型不只是关于渲染表单,它们更多的是关于处理和清理表单(GET / POST)输入,你想要做什么。当您的AJAX请求中的POST或GET数据到达您的服务器时,它基本上与表单数据无法区分。我主张创建一个Form模型,它是您的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请求或一个表单,当它到达你的服务器时它并不重要!当然它们被称为Form模型,因为这通常是GET或POST数据的来源,但它不会 来自一个表单:)

如果您创建一个Form模型来表示您的AJAX请求,那么您将获得随之而来的所有钩子和清理工具,并且它会更加“django-esque”。

关于您的评论

更新

我想你有多个表单类。显然我不知道你的系统是如何设计的,但我会提供我的建议。

就像你说的那样,你将使用它来清理你的数据,所以你需要根据你发送的数据来定义你的Form类。例如,如果我有一个AJAX请求,使用Name,Email和CommentBody数据提交注释,这些数据将是一个Form类。如果我有另一个AJAX请求发布一个新文章发送Title,Author和ArticleBody,那将是另一个Form类。

并非所有的AJAX请求都必然需要一个表单,如果你有一个AJAX调用投票评论你可能不会把它作为一个表单,因为(我猜)你不需要消毒任何数据。