调用django视图以返回另一个视图的结果

0 投票
1 回答
1017 浏览
提问于 2025-04-18 09:32

我有两个视图,定义如下:

class ListResultView(LoginRequiredMixin, ListView):
    model = Result

class GalleryView(LoginRequiredMixin, ListView):
    model = Result
    template = 'gallery.html'
    context_object_name = 'gallery'

ListResultView() 使用隐式定义的 result_list.html 作为模板,而 result 被隐式定义为上下文模型。另一方面,GalleryView(这是同样数据的更美观的列表)使用显式定义的模板 'gallery.html',上下文对象被定义为 'gallery'。

我通过以下 urls.py 来调用它们(这是主要的 urls.py,不是包含的那个):

from django.conf.urls import patterns, include, url
import lc.views
from django.views.generic import TemplateView
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', TemplateView.as_view(template_name="about.html"), 
        name='indexpage'), 
    url(r'^gallery/$', lc.views.GalleryView.as_view(), name='gallery'),
    url(r'^admin/', include(admin.site.urls), name='admin'),  
    url(r'^listquery/', lc.views.ListCView.as_view(),
        name='s_queries',),
    url(r'^listresult/', lc.views.ListResultView.as_view(),
        name='s_results',),
    url(r'^new/', lc.views.CreateCQuery.as_view(),
        name='query_new',),    
    url(r'^login/$', 'django.contrib.auth.views.login', name='login'),
    url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/login'},              name='logout'),
    url(r'^deletes/(?P<pk>\d+)/$', lc.views.DeleteS.as_view(), name='delete_s'),
    url(r'^deleter/(?P<pk>\d+)/$', lc.views.DeleteResult.as_view(), name='delete_result'),
    url(r'^resultview/(?P<pk>\d+)/$', lc.views.ResultDetailView.as_view(),
        name='resultview'),
    url(r'^notyet', TemplateView.as_view(template_name="not_impl.html"), name="notyet",),
)

我遇到的问题是,当我调用 GalleryView 的网址时,却得到了 ListResultView 的响应。我没有看到任何错误信息,不知道有没有人能告诉我我哪里出错了,或者该如何调试。目前我在考虑放弃基于类的视图,改写成基于函数的视图,这样我可以更清楚地了解发生了什么,但由于时间紧迫,我更希望不这样做。

1 个回答

1

在你的 GalleryView 中,把 template 改成 template_name

撰写回答