0

「検索」ボタンを押した後、ClassView の as_view() メソッドにリダイレクトする urls.py を取得しました。次のような場合があります。

def as_view():
   if request.method == 'POST':
       //sth
   elif request.GET.get('test1') or request.GET.get('test2'):
       //sth
   else:
       form = myForm()
   return render(request, 'template.html', {'form' : form, 'arg': self.arg})

奇妙な状況があります。私の自宅のコンピューターでは機能しますが、他のコンピューターでは機能しません。詳細には、サーバー上にこのファイルを取得し、サーバーに接続し、サーバー上で構成された virtualenv をオンにして、runserver 0:port を作成します。

自宅のコンピューターでこれを行うとすべて問題ありませんが、別のコンピューターから http://sererIP:port に接続すると、「検索」ボタンを押してメソッド as_view() を実行すると、コードでこの「else」になります次に、フォームが初期化されますが、レンダリングを返すと何も返されず、白いページしかありません。サーバー出力をチェックインすると、

[07/May/2013 05:54:33] "POST / HTTP/1.1" 405 0

赤い色で。

ラップトップからサーバーに接続して runserver 0:port を作成した後、このラップトップでも同じ問題が発生しました。自宅のパソコンから接続して試してみたところ、ホワイトページが表示されました。

4

2 に答える 2

1

as_view()クラスベースのビューは、http 応答を返すことは想定されていませんが、呼び出し可能な関数です...GET要求に対する応答を送信する場合は、ビュー クラスにメソッドを追加getします。

class MyView(View):
    def get(request):
        # return your http response here

Django のクラスベースのビューを少し閲覧したい場合は、こちらのドキュメントが便利です!

于 2013-05-07T11:21:39.907 に答える
0

Django FormView を使用しないのはなぜですか? これはドキュメントです。

from django.views.generic.edit import FormView

class MyFormView(FormView):
    form_class = myForm
    template_name = 'my_template.html'
    success_url = '/thanks/'

    def get_context_data(self, **kwargs):
        #This is you GET
        return super(MyFormView. self).get_context_data(**kwargs)

    def form_valid(self, form):
        #This is after the post, when the form is valid
        return super(MyFormView, self).form_valid(form)

    def form_invalid(self, form):
        #This is after the post, when the form is invalid
        return super(MyFormView, self).form_invalid(form)

get_succes_url()どこかにリダイレクトする方法で遊ぶことができます。

お役に立てば幸いです。

于 2013-05-07T13:05:58.213 に答える