我有一个名为view_requests.html
的网页。在页面上有一个标签,我想基本上有一个人们可以投票的reddit风格的对象列表。我使用django-voting
完成了这项工作。
但是,在第二个标签页上,我希望能够添加请求。这要求我有一张人们可以提交的表格。
我面临的问题是要实现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"),
答案 0 :(得分: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))