0

ここに私の問題があります:

同じページのフォームを使用してフィルタリングできるメッセージのリストがあります。また、リストの下にあるメッセージの 1 つをクリックして表示することもできます。

私の問題は、リストをフィルタリングしてからメッセージを選択して表示すると、リストをフィルタリングする GET データが「失われる」ことです。そのため、すべてのメッセージが再びリストに表示されます。

メッセージを表示し、メッセージをクリックしたときのリストを保持するにはどうすればよいですか?

私のURL:

url(r'^inbox/$', view='inbox', name="kernel-networking-messages-inbox"),
url(r'^inbox/(?P<message_pk>\d+)/$', view='inbox_message', name="kernel-networking-messages-inbox-read"),

私の見解:

class InboxView(SearchViewMixin):
    template_name = "kernel/networking/messages/inbox.html"
    form_class = InboxForm

inbox = InboxView.as_view()

class InboxMessageView(InboxView):
    def dispatch(self, request, *args, **kwargs):
        self.message = get_object_or_404(Message, pk=kwargs['message_pk'])
        return super(InboxMessageView, self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(InboxMessageView, self).get_context_data(**kwargs)
        context['message'] = self.message
        return context

inbox_message = InboxMessageView.as_view()

inbox.html:

<form action="" method="get">
...
<input type="submit" value="Search"/>
<table>
...
</table>
{% if message %}
// display message
{% endif %}

私はできるだけ明確にしようとしました:/

4

1 に答える 1

1

2つのオプションがあります。

1: Django のセッション フレームワークを使用します。

フィルタリングのリクエストを受け取ったら、フィルター オプションをセッションに保存します。request.session['filter_options'] = filter_option_dict

次に、ページを読み込んで request.GET にフィルタリング オプションが表示されない場合は、セッションにオプションがあるかどうかを確認します。

if(len(request.GET) > 0):
    #get filter options from request.GET
    #save filter options to session
elif('filter_options' in request.session):
    #get filter options from session
else:
    #no filter options, display without filtering

セッションは一時データ用に設計されており、1 台のコンピューター上の 1 つのブラウザーに固有のものであることに注意してください。これは、このユース ケースでは問題ではありませんが、覚えておく必要があります。

2: ajax を使用して、ページの残りの部分を変更せずにメッセージを読み込みます。サーバー上で、ページ ヘッダーやその他の書式設定なしでメッセージを返すビューを作成し、フロントエンドで JavaScript を使用してリクエストを送信し、取得したメッセージをページに挿入します。これは JQuery を使用すると非常に簡単ですが、JQuery がなくても実行できます。

リンクをクリックするたびに更新しなければならない Web サイトよりも、インタラクティブに更新される Web サイトの方が、ユーザーの観点からははるかに優れているため、これが私の好みのソリューションです。

于 2012-06-20T15:36:47.377 に答える