【问题标题】:missing 1 required positional argument AJAX call缺少 1 个必需的位置参数 AJAX 调用
【发布时间】:2015-03-16 12:46:52
【问题描述】:

在一个问题上我需要你的帮助。我发现了几个关于这个问题的stackoverflow,但没有设法解决这个问题。 我有我的注册表单,我想在 AJAX 中检查用户名是否存在。 对于这种情况,我决定使用 GET 方法,这是该 AJAX 的专用视图,但出现错误:verif_user() missing 1 required positional argument: 'username'

首先,我一直在 PHP 中进行 POST Ajax 调用,所以我不确定我是否正确处理了 GET。我的代码可以(安全)吗?我该如何解决我的问题?

感谢您的帮助。

jQuery:

$.ajax({
    url: "{% url 'membres.views.verif_user' %}",
    data: 'username='+value,
    success: function(data){
        console.log(data);
        if(data == 'unavailable') {
            label.append(checkStartInvalid + "Ce nom d'utilisateur n'est pas disponible" + checkEnd);
        } else {
            label.append(checkValid);
        }
    }
});

urls.py

urlpatterns = patterns('membres.views',
    url(r'^verif-user$', 'verif_user'),
    url(r'^verif-email$', 'verif_email')
)

views.py

# AJAX Calls
def verif_user(request, username):
    if request.is_ajax() and request.method == 'GET':
        if User.objects.filter(username=username).exists():
            return HttpResponse("unavailable")
        else:
            return HttpResponse("available")
    else:
        return HttpResponse("Temporary 404")

【问题讨论】:

    标签: jquery ajax django python-3.x


    【解决方案1】:

    verif_user 函数中删除username 参数并从request.GET 字典中获取用户名:

    def verif_user(request):
        if request.is_ajax() and request.method == 'GET':
            username = request.GET['username']
            ...
    

    【讨论】:

    • 谢谢,确实有效。你能解释一下为什么我写的东西不起作用吗?
    • def verif_user(request, username): 表示username是通过url传递的(例如:/verif-user/admin/)。在您的 ajax 调用中,您通过 GET 参数传递用户名。更详细的url参数说明见文档:docs.djangoproject.com/en/1.7/topics/http/urls
    猜你喜欢
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 2017-03-27
    • 2019-11-12
    • 2019-12-23
    • 2021-02-01
    相关资源
    最近更新 更多