是否有推荐的方法使用Django清理输入字符串而不通过Django表单系统?
也就是说,我正在编写通过AJAX提供表单输入的代码,所以我正在跳过django提供的整个Form模型。但我确实希望在提交到数据库之前清理输入。
答案 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调用投票评论你可能不会把它作为一个表单,因为(我猜)你不需要消毒任何数据。