美文网首页
CBV--基于类的视图

CBV--基于类的视图

作者: 快去学习不然怎么去看aimer | 来源:发表于2019-09-25 19:20 被阅读0次

在url.py中,

path('server/' , views.ServerView.as_view(),name='serverview'),

在view.py中,

class ServerView(models.Model):
    def get(self, request):
        qst_disks = DiskInfo.objects.all()
        return render(request, 'cmdb/disk-list.html', {
            "diskinfo": qst_disks
        })

ListVIew

基本方法

class ArticlePostListView(ListView):
    # 指定获取数据的 model
    model = ArticlePost

    # 指定模板语言中使用的变量名
    context_object_name = 'postList'

    # 指明模板名称
    template_name = 'blog/post-list.html'

通过取数据库的值进行过滤

class ArticlePostListView(ListView):
    queryset = ArticlePost.objects.order_by("-id")
    context_object_name = 'postList'
    template_name = 'blog/post-list.html'

动态获取uid

 class ServerDListView(ListView):

     context_object_name = "serverList"
     template_name = 'cbv/server-list.html'

     def get_queryset(self):
         '''动态获取uid,格式为/server-list/2/,当然格式与url有关'''
         # server_id = self.kwargs['uid']       #(1)

         '''动态获取uid,格式为?uid=1'''
         server_id = self.request.GET.get('uid')       #(2) 与urls.py中相匹配
         return Server.objects.filter(id__lte=server_id)

在path.py:
     path('server-list/', views.ServerDListView.as_view(), name="serverList"),       #(2)
     path('server-list/<int:uid>/', views.ServerDListView.as_view(), name="serverList"),     #(1)

添加额外的数据

class ServerNowListView(ListView):           
    model = Server

    context_object_name = "serverList"

    template_name = 'cbv/server-list.html'

    '''重写context方法,由于context得到的为字典,因此在context中添加now使用的为字典的添加方法'''
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['now'] = timezone.now()
        return context

DetailView

有条件的筛选

在urls.py中:
     path('server-detail/<slug:pk>/',views.ServerDetailView.as_view(),name='serverdetail'),

在views中:
class ServerDetailView(DetailView):
    model = Server
    context_object_name = "server"
    template_name = "cbv/server-detail.html"

在server-detail.html中:
通过循环取值时,使用'.'的方法
{%  for servers in server.memory.all %}

在点击详情跳转时
通过获取详情所在的id到所在的数据库取值。因此,在包含详情的页面的点击事件需要返回参数
<td><a href = "{% url 'cbv:serverdetail'  server.id  %}">详情</a></td>

相关文章

  • CBV--基于类的视图

    在url.py中, 在view.py中, ListVIew 基本方法 通过取数据库的值进行过滤 动态获取uid 添...

  • Django类视图笔记整理

    Django基于类的视图 1.基于类的视图简介 基于类的视图使用Python 对象实现视图,它提供除函数视图之外的...

  • 3-基于类的视图-Django REST框架

    3-基于类的视图-Django REST框架 教程3:基于类的视图 我们也可以使用基于类的视图而不是基于函数的视图...

  • Class-based Views

    视图-Django REST框架 decorators.py views.py 基于类的视图 Django的基于类...

  • Django REST框架——教程3:基于类的视图

    教程3:基于类的视图 我们也可以使用基于类的视图来编写我们的API视图,而不是基于功能的视图。正如我们将看到的,这...

  • Django_REST Framework -4.基于类的视图

    基于类的视图 基于类的视图比先前基于函数的视图的可重用性更强,可以更多快好省地 ( DRY )地写出简洁的代码。 ...

  • CBV和FBV

    CBV基于类的视图(Class base view)和FBV基于函数的视图(Function base view)

  • 1.9 使用基于类的视图

    1. 使用基于类的视图 基于类的视图是将 视图 实现为 Python 对象而不是函数的另一种方法。因为视图时可以调...

  • 基于类的视图

    我们也可以使用基于类的视图编写我们的 API 视图,而不是基于函数的视图。我们将看到这是一个强大的模式,允许我们重...

  • Flask系列教程(16)——类视图

    类视图 之前我们接触的视图都是函数,所以一般简称视图函数。其实视图也可以基于类来实现,类视图的好处是支持继承,但是...

网友评论

      本文标题:CBV--基于类的视图

      本文链接:https://www.haomeiwen.com/subject/pjrvuctx.html