5

こんにちは、私がajax呼び出しをしているとき、私はコンソールでこれを取得しています:

POST http://127.0.0.1:8000/registration/check/username/ 500 (INTERNAL SERVER ERROR) 

また、このリンクをクリックすると、次のように表示されます。

DoesNotExist at /registration/check/username/
User matching query does not exist.
Request Method: POST
Request URL:    http://127.0.0.1:8000/registration/check/username/
Django Version: 1.3
Exception Type: DoesNotExist

JQuery:

function check_username() {
    $("#id_username").change(function() {
        var user = $("#id_username").val();
        var status = $("#id_username").nextAll(".status").first().empty();
        var checking = '<img src="/site_media/images/loader.gif" align="absmiddle"> Checking availability...';
        var success = '<img src="/site_media/images/tick.gif" align="absmiddle">';
        var e_length = '<p>User name have to be longer</p>';
        if (user.length >= 3) {
            status.append(checking);
            $.ajax({
                url: "/registration/check/username/",
                type: "POST",
                data: { username : $("#id_username").val() },
                dataType: "text",
                success: function(msg) {
                    if (msg == '1') {
                        status.append(success);
                    }
                    else {
                        status.append("This username is already in use");
                    }
                }
            });
        }
        else if (user.length <= 3 && user.length != 0) {
            status.append(e_length);
        }
        else {
            status;
        }
    });
}

HTML:

{% block main-menu %} 
    <div class="contentarea">
            <form method="post" action="">{% csrf_token %}
                <ul id="reg-form">
                    <li>
                        <label for="id_username">Username:</label>
                        <input id="id_username" type="text" name="username" maxlength="30" />
                        <div class="status"></div>
                    </li>

Urls.py:

...
(r'^registration/check/([\w|\W]+)/$', register_check),
...

Views.py:

@csrf_exempt
def register_check(request, variable):
    if request.is_ajax():
        if variable == 'username':
            user = User.objects.get(username__exact = request.POST['username']);
            if user:
                msg = "1"
            else:
                msg = '0'
        return HttpResponse(msg)
    else:
        return HttpResponse("0")
4

1 に答える 1

2

通常、。には文字列を使用しますurls.py。使用する代わりに

(r'^registration/check/([\w|\W]+)/$', register_check),

使用する

(r'^registration/check/([\w|\W]+)/$', "register_check"),

最初はビューファイルへのパスである必要があります。

アップデート

ここにあるDjangoの1.4Webサイトによると、ヘッダーのリクエストにcsrfトークンを追加する必要があります。しかし、私はコードのチャンク全体を読んでいませんでした。

于 2012-08-18T02:25:29.687 に答える