1

これは、タスクをリストし、desc と asc の 3 つの条件で並べ替えたコードです。
現在、2 つの問題があります
。1) order_by は最初のページにのみ適用されます。order_by が実行され、順序付けられたリスト全体がページ付けされるようにしたいと思います。
2) "_pressed" 矢印の画像は表示されません。

助けてください!ありがとう!

VIEW.PY

def task_list(request, **kwargs):
    q = Task.objects.all()
    if 'sort' in request.GET:
        sort_by = request.GET['sort']
    else:
        sort_by = 'latest-desc'

    if sort_by == 'latest-desc':
        q = q.order_by('-pub_date')

    if sort_by == 'latest-asc':
        q = q.order_by('pub_date')

    if sort_by == 'price-desc':
        q = q.order_by('-price')

    if sort_by == 'price-asc':
        q = q.order_by('price')

    if sort_by == 'deadline-desc':
        q = q.order_by('-expiry_date')

    if sort_by == 'deadline-asc':
        q = q.order_by('expiry_date')

    kwargs['queryset'] = q.all()

    return list_detail.object_list(request, **kwargs)

URL.PY

urlpatterns = patterns('',
    url(r'^tasks/$', 'tasks.views.task_list', 
         {'template_name':'findtask.html', 'paginate_by':4}, name='tasks'),
)

HTML

<div class="sortList">
<ul>
<li class="sort">Sort by latest
<a href="?sort=latest-desc">{% if request.GET.sort == 'latest-desc' %}<img src="/static/img/downarrow_pressed.gif"/>{% endif %}
{% if request.GET.sort != 'latest-desc' %}<img src="/static/img/downarrow.gif"/>{% endif %}</a> 
<a href="?sort=latest-asc">{% if request.GET.sort == 'latest-asc' %}<img src="/static/img/uparrow_pressed.gif"/>{% endif %}
{% if request.GET.sort != 'latest-asc' %}<img src="/static/img/uparrow.gif"/>{% endif %}</a></li>
<li class="sort">Sort by deadline
<a href="?sort=deadline-desc">{% if request.GET.sort == 'deadline-desc' %}<img src="/static/img/downarrow_pressed.gif" />{% endif %}
{% if request.GET.sort != 'deadline-desc' %}<img src="/static/img/downarrow.gif" />{% endif %}</a>
<a href="?sort=deadline-asc">{% if request.GET.sort == 'deadline-asc' %}<img src="/static/img/uparrow_pressed.gif" />{% endif %}
{% if request.GET.sort != 'deadline-asc' %}<img src="/static/img/uparrow.gif" />{% endif %}</a></li>
<li class="sort">Sort by price
<a href="?sort=price-desc">{% if request.GET.sort == 'price-desc' %}<img src="/static/img/downarrow_pressed.gif" />{% endif %}
{% if request.GET.sort != 'price-desc' %}<img src="/static/img/downarrow.gif" />{% endif %}</a>
<a> <a href="?sort=price-asc">{% if request.GET.sort == 'price-asc' %}<img src="/static/img/uparrow_pressed.gif" /> {% endif %}
{% if request.GET.sort != 'price-asc' %}<img src="/static/img/uparrow.gif" />{% endif %}</a></li>
</ul>
</div>
4

2 に答える 2

0
  1. テンプレート ファイルfindtask.html、特にページの URL リンクを生成する部分を確認してください。sortリンクに引数が誤って欠落しているとは思えません。
  2. 設定ファイルのTEMPLATE_CONTEXT_PROCESSORSを確認してください。リクエスト プロセッサはありますか? テンプレートに存在しない変数にアクセスしても、Django でエラーが発生しなくなりました。
于 2012-04-15T06:50:24.787 に答える
0

2つ目の質問について。TEMPLATE_CONTEXT_PROCESSORS でdjango.core.context_processors.requestの場合は?

{{request.GET}} が何かを返すかどうかを確認します。

最初について。多分ここに問題があります:

kwargs['queryset'] = q.all()

これを試して:

kwargs['queryset'] = q

そして、ビューの最初と最後にある q の内容をトレースする必要があります

于 2012-04-14T21:10:10.613 に答える