> DetailView <?php <? = echo DetailView::widget([ 'model' => $model, 'attributes' => [ 'id', 'package_id
detailFilter 属性:data-detail-filter Type:Function Default:function(index,row){ return true} detailView
, TodayArchiveView, WeekArchiveView, YearArchiveView, ) from django.views.generic.detail import DetailView ② DetailView:显示一个对象的某个属性详细信息 用于显示某一 Model 中的一个 object 的详细信息。 用属性 model 或 queryset 指定要操作的 Model 或 queryset; DetailView 会根据 URLConf 中的 <int:pk> 或 <slug:slug> 筛选出一个 object; from django.views.generic import DetailView from books.models import Author # 当该页面被访问时,对 Model 做出额外的工作 class AuthorDetailView(DetailView): queryset = Author.objects.all() def get_object
DetailView 除了从数据库中获取模型列表的数据外,从数据库获取模型的一条记录数据也是常见的需求。比如查看某篇文章的详情,就是从数据库中获取这篇文章的记录然后渲染模板。 对于这种类型的需求,Django 提供了一个 DetailView 类视图。 detail 视图函数转换为等价的类视图 PostDetailView,代码如下: blog/views.py from django.views.generic import ListView, DetailView # 记得在顶部导入 DetailView class PostDetailView(DetailView): # 这些属性的含义和 ListView 是一样的 model = Post post def get_context_data(self, **kwargs): # 覆写 get_context_data 的目的是因为除了将 post 传递给模板外(DetailView
开发环境 django 1.11 DetailView 的相关源码 # .. This'll get passed as the queryset to DetailView.get_object, # which'll handle the 404 return obj 看了源码发现 get_object,就是返回 单一的对象,相当于 return YouModel.objects.get(pk='pk') 重写 generic.DetailView 里面的 get_object class DetailView(generic.DetailView): model = Article # 模型名称 template_name = = cache.get("article_obj_%s" % pk) # 获取该主键的缓存 if not obj: # 如果没有就 obj = super(DetailView
return Question.objects.order_by('pub_date')[:5] class DetailView(generic.DetailView): model = Question template_name = 'polls/detail.html' class ResultsView(generic.DetailView): model = Question template_name = 'polls/results.html' generic.DetailView 代表
" # 封装:定义展示结果的视图处理类 class ResultView(generic.DetailView): model = Question template_name = DetailView和ResultView中的要查询的数据,同样也是通过主键编号进行查询的,默认的变量名称是pk,所以在路由中要进行如下的修改配置,才可以正常使用 改造polls/urls.py路由模块 P<pk>\d+)/$", views.DetailView.as_view(), name="detail"), url(r"^(? 源码分析 此时,会有个问题困扰着我们,为什么要继承视图处理类,为什么要继承不同的处理类ListView和DetailView? 接下来,我们继续看DetailView是怎么操作的吧 class DetailView(SingleObjectTemplateResponseMixin, BaseDetailView): "
path('search', views.SearchView.as\_view(), name='search'), path('detail/<int:pk>', views.DetailView.as 详情页 我们再来开发详情页,从urls.py中看到,详情页是由DetailView来实现的,我们来窥探它的全貌: class DetailView(generic.DetailView): model count() return obj def get\_context\_data(self, \*\*kwargs): context = super(DetailView recommend\_list() context['recommend\_list'] = recommend\_list return context 它很简单,继承了DetailView
convertView.getTag(); } addressItem.titleView.setText(location.getName()); addressItem.detailView.setText return convertView; } } private class AddressItem{ TextView titleView; TextView detailView convertView) { titleView = (TextView)convertView.findViewById(R.id.address_item_title); detailView
NavigationSplitView 则针对的是多栏场景,例如 :iPadOS 、macOS: NavigationSplitView { SideBarView() } detail: { DetailView () } // 对应的是双列场景 NavigationView { SideBarView() DetailView() } .navigationViewStyle(.columns } // 对应的是三列场景 NavigationView { SideBarView() ContentView() DetailView() } .navigationViewStyle MyStore() var body: some View { NavigationView { SideBarView() DetailView some View { NavigationSplitView { SideBarView() } detail: { DetailView
P<pk>\d+)/results/$', DetailView.as_view( model=Poll, template_name=' DetailView 通用视图期望从 URL 中捕获名为 “pk” 的主键值,因此我们将 poll_id 改为 pk 。 默认情况下, DetailView 通用视图使用名为 <应用名>/<模型名>_detail.html 的模板。在我们的例子中,将使用名为 “polls/poll_detail.html” 的模板。 我们也指定了 results 列表视图的 template_name – 这确保了 results 视图和 detail 视图渲染时会有不同的外观,虽然它们有一个 DetailView 隐藏在幕后。 在 DetailView 中 poll 变量是自动提供的 – 因为我们使用了一个 Django 模型 (Poll) ,Django 能够为上下文变量确定适合的名称。
urlpatterns = [ path('', views.IndexView.as_view(), name='index'), path('<int:pk>/', views.DetailView.as_view return Question.objects.order_by('-pub_date')[:5] class DetailView(generic.DetailView): model = Question template_name = 'polls/detail.html' class ResultsView(generic.DetailView): model
DetailView通用视图提供了一个publisher对象给context,但是我们如何在模板中添加附加信息呢? 答案是派生DetailView,并且在get_context_data方法中提供你自己的实现。 默认的实现只是简单的 给模板添加了要展示的对象,但是你这可以这样覆写来展示更多信息: from django.views.generic import DetailView from books.models from django.utils import timezone from books.models import Author class AuthorDetailView(DetailView 详见 DetailView参考。
urlpatterns = [ path('', views.IndexView.as_view(), name='index'), path('<int:pk>/', views.DetailView.as_view latest_question_list' def get_queryset(self): return Question.objects.order_by('-pub_date')[:5] class DetailView (generic.DetailView): model = Question template_name = 'polls/detail.html' class ResultsView (generic.DetailView): model = Question template_name = 'polls/results.html' def vote(request
urlpatterns = [ path('index', views.IndexView.as_view(), name='index'), path('detail/<int:pk>', views.DetailView.as_view return Product.objects.filter(status=0).order_by('-timestamp') 详情页 我们再来开发详情页,从urls.py中看到,详情页是由DetailView 来实现的,我们来窥探它的全貌: class DetailView(generic.DetailView): model = Product template_name = 'app/detail.html .get_object() return obj def get_context_data(self, **kwargs): context = super(DetailView , self).get_context_data(**kwargs) return context 它很简单,继承了DetailView通用模板类来显示详情。
app'urlpatterns = [ path('index', views.IndexView.as_view(), name='index'), path('detail/<int:pk>', views.DetailView.as_view return Product.objects.filter(status=0).order_by('-timestamp')详情页我们再来开发详情页,从urls.py中看到,详情页是由DetailView 来实现的,我们来窥探它的全貌:class DetailView(generic.DetailView): model = Product template_name = 'app/detail.html super().get_object() return obj def get_context_data(self, **kwargs): context = super(DetailView , self).get_context_data(**kwargs) return context它很简单,继承了DetailView通用模板类来显示详情。
后面的详情页面执行缩放动画,标题栏隐藏, private void doAnim() { titleView.startAnimation(mTranOutAnimation); detailView.startAnimation public void onDismiss() { titleView.startAnimation(mTranInAnimation); detailView.startAnimation
/Scripts/datagrid-detailview.js"></script> //加载grid $('#subDatagrid') fitColumns: false, rownumbers: true,//行号 view: detailview }, 10); }, view: detailview
P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'), url(r'^(? return Question.objects.order_by('-pub_date')[:5] class DetailView(generic.DetailView): model = 这里使用两个通用视图:ListView和DetailView。这两个视图分别代表“显示对象列表”和“显示特定类型对象的详细信息页面”的抽象概念。 每个通用视图需要知道它将作用于哪个模型。 默认情况下,DetailView泛型视图使用一个称作<app name>/<model name>_detail.html的模板。 而对于DetailView,question变量会被自动提供,因为我们使用了Django的模型(Question),Django会智能的选择合适的上下文变量。
注意这里我们使用的是类视图,类视图的内容具体请参考 基于类的通用视图:ListView 和 DetailView。 blog/views.py class PostDetailView(DetailView): # 这些属性的含义和 ListView 是一样的 model = Post template_name 方法其实也很简单,只需要稍微改动一下渲染 Markdown 文本内容的方式即可,具体代码就像这样: blog/views.py class PostDetailView(DetailView): django.utils.text import slugify from markdown.extensions.toc import TocExtension class PostDetailView(DetailView