TemplateView , ListView ,DetailView三种常用类视图用法

有函数类图,还需要类视图??当然,类视图方便,好用,不信你感受感受。。。。

TemplateView

get_queryset(self)#默认取出该表所有数据。想要过滤自定义只能在get_queryset()中
个人理解:listview,detailview,templateview。前两个特别像,变量函数基本一样,templateview也差不多,只不过没有get_queryset()

model=Atticle#指定了数据表。他的功能相当于取出了Article中的所有数据
template_name="blog/index.html"#指定页面
context_object_name="artcle_list"#listview默认使用object_list作为上下文变量。可使用context_object_name重命名。
get_context_data(self,**kwargs)#这个方法用来添加额外的内容到上下文变量中。

Example views.py:

from django.views.generic.base import TemplateView

from articles.models import Article

class HomePageView(TemplateView):

    template_name = "home.html"#最少得有这个

    def get_context_data(self, **kwargs):#向上下文变量中添加额外的数据
        context = super(HomePageView, self).get_context_data(**kwargs)
        context['latest_articles'] = Article.objects.all()[:5]
        return context

Example urls.py:

from django.conf.urls import url

from myapp.views import HomePageView

urlpatterns = [
    '''
    classmethod as_view(**initkwargs)¶
    返回一个可调用的视图,它接受一个请求并返回一个响应:
    response = MyView.as_view()(request)
    '''
    url(r'^$', HomePageView.as_view(), name='home'),
]

Example home.html:

{% for article in latest_articles%}
    {{article.name}}
{% endfor %}

ListView、DetailView

官方文档:ListView-Django documention

个人理解:listview ,detailview的区别在是,基本没什么区别。ListView与DetailView的区别

model=Atticle#指定了数据表。他的功能相当于取出了Article中的所有数据
template_name="blog/index.html"#指定页面
context_object_name="artcle_list"#listview默认使用object_list作为上下文变量。可使用context_object_name重命名。
get_queryset(self)#默认取出该表所有数据。想要过滤自定义只能在get_queryset()中
get_context_data(self,**kwargs)#这个方法用来添加额外的内容到上下文变量中。

参考文档:
1、Class-based views官方版
2、类视图中文翻译版
3、ListView与DetailView的区别

### 回答1: Django的视图有以下几种: 1. View 2. TemplateView 3. ListView 4. DetailView 5. CreateView 6. UpdateView 7. DeleteView 使用方法: 1. 继承对应的视图 2. 指定相关属性(如模板文件、模型等) 3. 在urls.py中指定对应的URL路径与该视图的映射关系. 例如: ``` from django.shortcuts import render from django.views.generic import ListView from .models import Book class BookListView(ListView): model = Book template_name = 'book_list.html' ``` 在urls.py中: ``` from .views import BookListView urlpatterns = [ path('books/', BookListView.as_view(), name='book_list'), ] ``` ### 回答2: Django的视图是一种用于处理HTTP请求的视图函数,它是基于的方式实现的。Django提供了多种视图以满足不同的开发需求。 常用的Django视图有以下几种: 1. TemplateView:用于显示静态HTML模板的视图。 2. ListView:用于显示数据库模型的列表视图。 3. DetailView:用于显示数据库模型的详细信息视图。 4. CreateView:用于创建数据库模型的视图。 5. UpdateView:用于更新数据库模型的视图。 6. DeleteView:用于删除数据库模型的视图。 使用视图需要进行如下步骤: 1. 在views.py文件中定义一个,该需要继承Django提供的视图之一。 2. 在中定义相应的属性和方法,例如template_name属性用于指定要渲染的模板文件,或者model属性用于指定要处理的数据库模型。 3. 根据具体需求,重写父中的方法,例如get(queryset)方法用于处理GET请求,并返回渲染好的模板。 可以通过以下方式将视图与URL路径进行关联: 1. 在urls.py文件中导入对应的视图。 2. 使用path()或者re_path()函数将URL路径与视图关联起来,其中第一个参数是URL路径,第二个参数是视图。 例如: ``` # views.py文件 from django.views.generic import TemplateView class HomeView(TemplateView): template_name = 'home.html' # urls.py文件 from django.urls import path from .views import HomeView urlpatterns = [ path('', HomeView.as_view(), name='home'), ] ``` 以上是Django视图的基本使用方法,可以根据具体需求选择合适的视图,并根据需要进行相关配置和定制。 ### 回答3: Django的视图是一种用于处理Web请求的方法,相比于函数视图视图更加灵活和易于扩展。Django提供了许多内置的视图,下面是其中一些常用视图及其使用方法: 1. ViewView是一个基础视图,用于处理基本的GET和POST请求。可以继承View,并重写get和post方法来处理相应请求。 2. ListViewListView继承自View,用于显示一个对象列表。需要指定模型和模板文件名。通过重写get_queryset方法,可以指定查询的数据集。 3. DetailView:DetailView显示一个对象的详细信息。需要指定模型和模板文件名,重写get_object方法以指定需要显示的对象。 4. CreateView:CreateView用于创建一个新的对象。需要指定模型和模板文件名。通过重写form_class或model_form方法,来自定义表单。 5. UpdateView:UpdateView用于更新一个已存在的对象。需要指定模型和模板文件名。通过重写form_class或model_form方法,来自定义表单。 6. DeleteView:DeleteView用于删除一个对象。需要指定模型和模板文件名。通过重写get_success_url方法,来指定删除成功后重定向的页面。 使用视图可以提高代码重用性和可维护性。首先要在urls.py中将URL和对应的视图绑定起来。然后,可以根据业务需求来重写视图中的方法,例如get、post、get_queryset等。还可以通过继承内置的视图来自定义新的视图,以满足特定的业务需求。 总而言之,视图是Django中处理Web请求的一种方法,提供了许多内置的视图供开发者使用。通过继承和重写方法,可以灵活地定制视图,以满足不同的业务需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值