1

Django モデル オブジェクト myObject のインスタンスを作成しています。

ユーザーが myObjects の新しいインスタンスを作成できるように、Django フォーム ウィザードを既にセットアップしています。

ユーザーが次のような GET を使用して myObject を「ドリルダウン」できるようにするビューを既にセットアップしています: "myWebsite.com/?objID=5"

フォーム ウィザードの最後の手順の後、ユーザーを "myWebsite.com/?objID=" にリダイレクトします。できます。ただし、2 つの新しい要件があります。

  1. フォーム ウィザードによってこのページにリダイレクトされた場合、このドリルダウン ページの上部に「ここに新しく作成されたオブジェクトがあります」と表示されるようにします。
  2. 天候に関係なく、フォーム ウィザードまたはその他の手段でこのドリルダウン ページにアクセスした場合でも、上記で説明したように URL を変更しないでください。

要件 #2 URL を変更しないように、POST を使用する必要があります。ただし、元の URL には GET が必要です。したがって、同じページで GET と POST を実行する必要があるようです。どうやってやるの?私は何か誤解していますか?私がやろうとしていることを達成するためのより良い方法はありますか?

4

4 に答える 4

1

POST 要求と GET 要求の両方である http 要求を作成することはできません。そうしようとするのは悪いことであり、インターウェブを壊してしまいます。

これはRFC2616 (http のw3c仕様) に反します。http は、「OPTIONS」、「GET」、「HEAD」、「POST」、「PUT」、「DELETE」、「TRACE」、「CONNECT」のいずれかでなければならない単一のメソッドを提供します

これは開発者によって無視されることが多い原則ですが、GET はサーバーからリソースを取得するように設計されており、具体的には、サーバー上のリソースの状態を変更せずに、リソースを取得するように設計されています。逆に、POST 要求は特にリソースの状態を変更するためのものです。したがって、GET はクエリ用で、POST はデータベースの変更用です。

于 2013-01-30T07:52:47.527 に答える
0

request.methodビュー内のリクエストに使用される http メソッドを示します。したがって、それに応じてコーディングできます。

例えば

def my_view(request):

    if request.method == 'GET':
        #do processing for get

    else if request.method == 'POST':
        #do processing for POST

    ...
于 2013-01-30T04:49:52.730 に答える