Djangoで実行されているWebサイトがあります。ユーザーが送信ボタンをクリックすると、別のドメインで実行されているサーバーにデータを送信してから、ユーザーに返されたデータを表示する必要があります。クロスドメインの問題のため、Ajaxリクエストを使用できません。多くの情報源は、Javascriptを使用して自分のサーバーに送信し、次に外部サーバーに送信する必要があることを示唆していますが、それをどのように実装するかわかりません。
3 に答える
2
フォームが最終的に移動する必要のあるURLを送信すると、サーバー側で処理を実行できます。したがって、次のような形式で非表示フィールドを含めるとします。
<input type="hidden" name="form_urlfield" value="http://anotherwebsite.com/wheretheformneedstogo">
基本的に、次のようなことができます。
$.ajax({
type: "POST",
url: 'http://somewhereonthesameserver.com/submit-form',
data: $('#ajax-form').serialize(),
success: function(data){...},
});
次に、送信フォームのURLに対応するビューで次のようにします。
import urllib2
data = urllib2.urlopen(request.POST['form_urlfield'], the_post_data)
//the_post_data is the data that you want to post to the other server..
// do something with the returned data
// return a JSON/Other response
また、DjangoでCSRF-Ajax機能が有効になっていることを確認してください。 https://docs.djangoproject.com/en/1.4/ref/contrib/csrf/#csrf-ajax
上記のすべては単なる擬似コードです(私はここに書きました..)が、それはあなたにどのように進めるかについてのアイデアを与えるはずです。お役に立てれば :)
于 2012-07-15T23:10:24.850 に答える
0
djangoアプリからhttpリクエストを行うことができます。
- ユーザーがhtmlフォームからdjangoにデータを送信する
- urllibを使用してデータを送信し、他のドメインから応答を取得します
- 適切な応答データをユーザーに送信します。
于 2012-07-15T22:54:38.307 に答える
0
Ashrayとdm03514によって提供された答えは正しいです。しかし、サーバーサイドのHTTP処理には、urllib2の代わりにRequestsを使用することを検討することをお勧めします。
于 2012-07-16T08:31:04.723 に答える