0

サーバー側でDjangoでjQueryを使用しています。私がやろうとしているのは、フォームを介してユーザーからテキストを取得し、同時に about.me やフレーバー.me のようにキャンバス領域にテキストを表示することです。次に、ユーザーはキャンバス領域のテキストを目的の位置にドラッグし、次のボタンをクリックすると、データがデータベースに保存され、ホームページにリダイレクトされる必要があります。window.location を設定したボタンをクリックした場合を除いて、すべてが完璧に機能しています(データはデータベースに保存されています)"http://127.0.0.1:8000".しかし、ボタンをクリックしてもそのページにアクセスできません。

Django サーバーでいくつかのエラーが発生します。

error: [Errno 32] Broken pipe
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 51161)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock

ここに私のhtmlがあります: https://gist.github.com/2359541

ジャンゴのviews.py:

cover.models から django.http から CoverModel をインポート HttpResponseRedirect をインポート

def coverview(request):
    if request.is_ajax():
            t = request.POST.get('top')
            l = request.POST.get('left')
            n = request.POST.get('name')
            h = request.POST.get('headline')
            try:
                    g = CoverModel.objects.get(user=request.user)
            except CoverModel.DoesNotExist:
                    co = CoverModel(top=t, left=l, name=n, headline=h)
                    co.user = request.user
                    co.save()
            else:
                    g.top = t
                    g.left = l
                    g.name = n
                    g.headline = h
                    g.save()
            return HttpResponseRedirect("/")

urls.py:

url(r'^cover/check/$', 'cover.views.coverview'),
url(r'^cover/$', login_required(direct_to_template), {'template': 'cover.html'}),

誰でも私を助けることができますか?

ありがとう!

4

2 に答える 2

0

これを適切に診断するための十分な情報が質問に含まれていませんが、これを試すことができます。

JSにドメイン名をハードコーディングすることは常に悪い考えです。たとえば、これを本番環境に移行するとどうなりますか?ユーザーをホームページに送りたい場合(設定されている場所から推定http://127.0.0.1:8000/)、場所を単にに設定し/ます。これにより、IPアドレス、ドメイン名、またはポートに関係なく、常にサイトルートに移動します。

于 2012-04-11T13:30:53.980 に答える
0

問題の一部は、window.location を使用して、データを投稿しようとした直後にページを離れることです。$.post() から応答が返ってきた場合にのみ、window.location を変更する必要があります。

$.post("check/", { top: t, left: l, name: n, headline: h}, function(data) {
    window.location.href = "/";
});

ハードコーディングされた URL を削除したことにも注意してください。クリスが言ったように、ここでは相対的なものを使用してください。

それでも機能しない場合は、上記の行で Javascript エラーを確認する必要があります。Firebug、Chrome Dev Tools、Opera Dragonfly などを使用します。POST が実際に実行されていることを確認し、それに関する詳細なデータをここに投稿してください。

于 2012-04-11T13:43:38.950 に答える