【问题标题】:Django 1.7 w/ AJAX, how - or where, do I clean input to be passed in AJAX request带有 AJAX 的 Django 1.7,我如何或在哪里清理要在 AJAX 请求中传递的输入
【发布时间】:2015-02-01 14:18:48
【问题描述】:

我有一个非常简单的 django 应用程序,它将一些表单输入传递给 AJAX 调用。对于未清理的数据,整个事情都很好,但我想确保我只传递 [a-zA-Z],没有特殊字符,也没有整数。最好在表单/模型字段上使用自定义验证器来处理这个问题?或者,在与 AJAX 请求相关的视图中清理它会更好吗?

这是我的 AJAX 调用和相关视图的不完整 sn-p。

$.ajax({
        url  : "/create_post/",
        type : "POST",
        data : {
            first_name : $('#id_first_name').val(),
            last_name  : $('#id_last_name').val(),
            department : $('#id_department').val()
        },

视图的相关部分:

def create_post(request):
    if request.method == 'POST':
        first_name = request.POST.get('first_name')
        last_name = request.POST.get('last_name')
        department = request.POST.get('department')
...
    results = search(first_name, last_name, department)

【问题讨论】:

标签: javascript jquery ajax django django-forms


【解决方案1】:

首先,您肯定想在服务器上执行此操作。出于可用性原因,建议在 javascript 中进行验证,但它不能替代服务器端验证。

处理来自 JSON 请求的数据验证与任何其他视图相同:使用 django 表单。像往常一样设置字段,加载数据并调用is_valid

所以,是这样的:

class UserForm(Form):
    first_name = forms.RegexField(regex=r'$[a-zA-Z]^')
    # ...etc

def create_post(request):
    if request.method == 'POST':
        form = UserForm(request.POST)
        if form.is_valid():
            return search(form.cleaned_data['first_name'], ...)
        else:
            # some sort of error response

【讨论】:

  • 谢谢哈米什,这就是我的想法,但这是我第一次在 django 中使用 AJAX,我想我认为它会比实际需要的更复杂。接受你的回答。
猜你喜欢
  • 1970-01-01
  • 2020-08-17
  • 2010-11-15
  • 2018-02-02
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多