0

私のviews.pyコード:

from django.template import Context, loader, RequestContext
from django.http import HttpResponse
from skey import find_root_tags, count, sorting_list
from search.models import Keywords

def front_page(request):

    if request.method == 'get' :
        str1 = request.getvalue['word'] 
        fo = open("xml.txt","r")
        for i in range(count.__len__()):

            file = fo.readline()
            file = file.rstrip('\n')
            find_root_tags(file,str1,i)    

            list.append((file,count[i]))

            sorting_list(list)

        for name, count in list:
            s = Keywords(file_name=name,frequency_count=count)
            s.save()

        fo.close()
        return HttpResponseRedirect('/results/')

    else :  
        str1 = ''
        list = []
        template = loader.get_template('search/front_page.html')
        c = RequestContext(request)
        response = template.render(c)
        return HttpResponse(response)

def results(request):

    list1 = Keywords.objects.all()
    t = loader.get_template('search/results.html')
    c = Context({'list1':list1,
    })

    return HttpResponse(t.render(c))

@これはみんなに。

フローは次のとおりです。

1) サーバー上でアプリを実行します。

2)ビュー「def front_page(request)」のelse部分により検索ページが表示されます。Pythonコードを実行したいので、ビュー「def front_page(request)」のif部分を実行したいと思いますそこに書かれ、ビュー「def results(request)」にリダイレクトされましたが、どうすればそれを行うことができますか?

3) 同じビューに戻るには、front_page.html の「アクション」と urls.py で何を言及する必要がありますか。目的の同じビューに戻れなかったため、同じ検索ページが繰り返し表示されています。助けてください。

4

2 に答える 2

1

@Barnaby によって投稿された回答を拡大するには、action='#' を使用して、フォームの get リクエストで使用された URL と同じ URL にフォームが投稿されます。次に、ビュー コードに、この URL の要求が GET 要求の場合はフォームを構成する作業を行い、それ以外の場合は POST であると想定し、応答を処理できるというロジックがあります。

さらに、あなたのビューがリクエストがPOSTであることを明示的にチェックすることをお勧めします.GETとPOSTが唯一のリクエスト タイプではなく、POST リクエストで送信された変数を処理する場合は、POST リクエストを処理していることを確実に知る必要があります。

それが役立つことを願っています

于 2012-07-04T11:52:22.260 に答える
0

短い答え: action="#". これは、現在の URL にポスト バックするための HTML トリックです。

テンプレートでビューを参照する方法に対する一般的な答えは、urlタグを使用することです。Django のフォーム機能の使用を検討することもできます。

于 2012-07-04T11:44:10.117 に答える