0

というページがありますview_requests.html。ページの 1 つのタブに、基本的に、人々が投票できる reddit スタイルのオブジェクトのリストが必要です。を使用してこれを達成しdjango-votingました。

ただし、2 番目のタブで、リクエストを追加する機能が必要です。これには、人々が送信できるフォームが必要です。

私が直面している問題は、Reddit スタイルの投票を実装するために、URLs.py で次の構成を使用する必要があったことです (つまり、views.py で独自のビューを作成しないでください)。しかし、フォームを作成するには、views.py に記述したコードにアクセスする必要があります。両方を同じページの別々のタブに表示することは可能ですか?どうすればこれを行うことができますか?

url(r'^view_requests/?$', object_list, dict(queryset=LibraryRequest.objects.all(),
        template_object_name='request', template_name='spicemodels/view_requests.html',
        paginate_by=15, allow_empty=True), name="view_requests"),
4

1 に答える 1

1

それを使用する必要はありませんobject_list組み込みの Django汎用ビューです。ビューが標準に準拠している場合に簡単にすることを目的としているため、ジェネリックがキーワードです。提供できる以上のものがビューから必要になるobject_listため、それを捨てて独自のビューを作成する時が来ました。独自のビューを作成するためのガイドとして使用できますobject_listが、一般的なものにするためだけに、不要なボイラープレート コードが多数含まれています。簡単に言うと、必要なものは次のとおりです。

def my_view(request, page=None):
    paginate_by = 15

    qs = LibraryRequest.objects.all()
    paginator = Paginator(qs, paginate_by, allow_empty_first_page=True)
    if not page:
        page = request.GET.get('page', 1)
    try:
        page_number = int(page)
    except ValueError:
        if page == 'last':
            page_number = paginator.num_pages
        else:
            # Page is not 'last', nor can it be converted to an int.
            raise Http404
    try:
        page_obj = paginator.page(page_number)
    except InvalidPage:
        raise Http404

    render_to_response('spicemodels/view_requests.html', {
        'request_list': page_obj.object_list,
        'paginator': paginator,
        'page_obj': page_obj,
        'is_paginated': page_obj.has_other_pages(),
    }, context_instance=RequestContext(request))
于 2012-08-01T20:11:27.770 に答える