0

アイテムの概要とアイテムの詳細情報をそれぞれ表示する 2 つのページがあります。このようなurl.py:

(r'^summary/$', 'views.summary'),
(r'^summary_\d|[a-z]{24}$', 'views.itemInfo'),

summary.htmlID でアイテムをクエリし、ジャンプしてアイテムのsummary_{{itemId}}.html詳細情報を表示できます。itemId は mongodb ObjectId で、正規表現 ' \d|[a-z]{24}' を使用します。

テンプレートに次のようにsummary.html書きます。

<form action="???" method="post">
    query Item by id:
    <input type="text" name="itemId" value="" /><br />
    <input type="submit" value="query" />
</form>

私の問題:

  1. 「???」には何を書けばいいの?場所、移動先の URL は動的に形成されます。

  2. file(summary_{{itemId}}.htmlアイテム情報を表示していたテンプレートに名前を付けるにはどうすればよいですか?

4

2 に答える 2

1

最初に URL を変更して、URL から を取得しますid

(r'^summary/(?P<id>\d|[a-z]{24})/$', 'views.itemInfo', name="item_info"),

同じ概要 URL をフォーム アクションに入れる

action="{% url 'views.summary' %}"

概要ビューで、リクエストがリクエストであるかどうかを確認POSTしてから、ID を取得し、詳細ビューにリダイレクトします。そうでない場合は、リクエストがサマリー ビューに表示されるGETか、id見つからない場合POST:

def summary(request):
    if request.method == 'POST':
        id = request.POST.get('itemId')
        if id:
            return redirect(reverse('item_info', kwargs={'id': id}))
    return render_to_response(
        'summary.html', {}, context_instance=RequestContext(request))

詳細ビューは ID でアイテムをクエリし、アイテムをコンテキストで渡す必要があります。テンプレートに as という名前を付けitem_detail.html、オブジェクト インスタンスを渡して、単一のテンプレートを使用してさまざまなアイテムを表示するだけです。

def itemInfo(request, id):
    item = MyItemModel.objects.get(id=id)
    return render_to_response(
        'item_detail.html', {'item': item}, context_instance=RequestContext(request))

で遊んでみましょitemitem_detail.html

これがお役に立てば幸いです。どうぞごimports自愛ください。

于 2013-07-15T04:31:15.220 に答える
0

URL とデータの受け渡し方法 (POST、GET など) という 2 つの重要なものが混在しています。HTTP は、URL やフレームワーク (Django など) を使用して計画したことなどのデータを受信するように作られているわけではありません。

/summary/ という 1 つのページのみを作成する必要があります。POST データで itemId を受け取ったかどうかを確認するビューにリンクする必要があります (現在の HTML スニペットを保持している場合)。そうでない場合は、クエリ フォームのみを表示します。それ以外の場合は、テンプレート タグまたはフィルターを使用してデータを表示する div 要素を追加します。組み込みのif テンプレート タグが役立つ場合があります。

追加のボーナスとして、エントリが入力されたときに検索フォームを引き続き使用できるため、維持するコードが少なくて済みます。

GET メソッドに切り替えることをお勧めします。これは、必要なことを行うためのものです。これにより、Web サイトのエントリをブックマークするユーザーは、検索フォームだけでなく、アイテムへの参照を保持できるようになります。

于 2013-07-15T04:29:45.460 に答える