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

Kar*_*rim 11 python django

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

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

Mat*_*ker 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
Run Code Online (Sandbox Code Playgroud)

这可能来自一个AJAX请求或一个表单,当它到达你的服务器时它并不重要!当然他们是所谓的表款,因为这通常是在那里GET或POST数据从何而来,但它不具有从一种形式:)

如果您创建一个Form模型来表示您的AJAX请求,您将获得随之而来的所有钩子和清理,而且它们都会更加"django-esque".

有关您的评论的更新:

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

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

并非所有的AJAX请求必然需要一种形式,如果你有一个AJAX调用票了,你可能不会把它看成一个形式,因为(我猜),你就不需要消毒任何数据的注释.