0

次のエラーは、javascript がページをリロードしようとすると、Django から私の弁護士に送信されます。

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 86, in run
[11/Aug/2012 22:30:23] "GET /posting/drafts HTTP/1.1" 200 2785
    self.finish_response()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 127, in finish_response
    self.write(data)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 210, in write
    self.send_headers()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 268, in send_headers
    self.send_preamble()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 192, in send_preamble
    'Date: %s\r\n' % format_date_time(time.time())
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 324, in write
    self.flush()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 57954)
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 582, in process_request_thread
    self.finish_request(request, client_address)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/Library/Python/2.7/site-packages/Django-1.4-py2.7.egg/django/core/servers/basehttp.py", line 139, in __init__
    super(WSGIRequestHandler, self).__init__(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 640, in __init__
    self.finish()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 693, in finish
    self.wfile.flush()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe

私が理解していることから、これは、サーバーがページの送信を完了する前に、Google Chrome が接続を切断していることを意味します。なんで?どうすれば修正できますか?

以下は JavaScript です (Noty は確認ボックスのプラグインです。" * * " の横にあるものは、実際に実行されるコードであることを知っておいてください):

function delete_draft(id, name) {
    var text = 'Are you sure you want to delete "' + name + '"?'; //*********
    var confirm = noty({
        text: text,
        layout: 'center',
        type: 'confirm',
        modal: true,
        buttons: [

        {addClass: 'btn btn-danger', text: 'Cancel', onClick: function($noty) {
            $noty.close();
        }
        },
            {addClass: 'btn btn-primary', text: 'Delete', onClick: function($noty) {
                $.post('/ajax/drafts/delete', {id:id}, function(data) { //**********
                    document.location.reload(true); //*******
                });
                document.location.reload(true); //*******
            }
            }
    ]});
}

これはDjangoのビューです:

def is_draft_owner(id, user): # It might be a coincidence, but when I added this the problems started. 
    print "test"
    if user.pk is Draft.objects.get(id = id).user_id:
        return True
        print "checl"
    print user.id
    print Draft.objects.get(id = id).user_id
    return False

def document_delete(request):
    if is_draft_owner(request.POST['id'], request.user):
        draft = Draft.objects.get(id = request.POST['id'])
        draft.delete()
        return HttpResponse("done")
4

1 に答える 1

1

なぜprint関数内で'sを使用するのですか?シェル環境内を除いて、何も印刷できません。

関数を次のように書き直すことをお勧めします。

def is_draft_owner(id = None, user = None):
    if id and user:
         return user.pk is Draft.objects.get(id = id).user_id
    else:
         return False

これを試してみることをお勧めします。IDまたはユーザーが指定されていない場合は、問題が解決する可能性があります。

さらに、Draft()のuser_idフィールドにForeignKeyを使用しましたか?その場合は、次のことを確認できますuser is Draft.objects.get(id = id).user_id

アップデート:

指定されたIDが無効な場合、djangoは例外をスローします。あなたもそれを捕まえて処理したいかもしれません。

私の限られたjQueryの経験を許してください、しかしそれはそうではありません{'id':id}か?それが私がいつも使う方法です。

于 2012-08-12T07:36:50.170 に答える