django使用通用视图 django.views.generic

views.py

#coding=utf-8

from django.shortcuts import render
from django.views.generic import ListView, DetailView

from .models import Book
# Create your views here.
"""
def book_route(request):
	return render(request, "book.html",{"books":Book.objects.all()})

def book_detail(request, key):
	book = Book.objects.all().get(id = key)
	return render(request, "book_intro.html", {"book":book})
"""

class BookRoute(ListView):
	model = Book
	template_name = "book.html"
	context_object_name = "books"

class BookDetail(DetailView):
	model = Book
	context_object_name = "book"
	template_name = "book_intro.html"



urls.py

#coding=utf-8

"""django_book URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.8/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Add an import:  from blog import urls as blog_urls
    2. Add a URL to urlpatterns:  url(r'^blog/', include(blog_urls))
"""
from django.conf.urls import include, url
from django.contrib import admin
from django.conf.urls import patterns

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),

	#可以将这种格式精简成下面patterns的前缀格式
    #url(r'^books/$', "books.views.book_route", name="books_book"),
    #url(r'^books/(?P<key>.+)/$', "books.views.book_detail", name="books_detail"),

    #url(r'^contactus/$', "django_forms.views.contactus", name="django_form_contactus"),
    #url(r'^contactus/thanks/', "django_forms.views.thanks", name="django_form_thanks"),

	#使用include来实现,include下的子视图都会受到username的捕获参数
	#使用include做前置匹配,不做后置匹配
	#使用include来协同工作,最低降低了app的耦合度
	#如果在这里使用额外参数kwargs={...},则include的所有views都会收到该参数
	url(r'^(?P<username>[a-zA-Z0-9]+)/blog/', include('advanced_views.urls')),
	url(r'^generic/$', include('generic_views.urls')),
]

#采用pattern的写法,减少view的编写
from books.views import BookRoute, BookDetail

urlpatterns += patterns("books.views",
		#url(r'^books/$', "book_route", name="books_book"),
		url(r'^books/$', BookRoute.as_view(), name="books_book"),
		#url(r'^books/(?P<key>.+)/$', "book_detail", name="books_detail"),

		#这个地方必须使用数据库表中的字段名称(pk是默认实现的主键)
		#该字段会自动用来筛选出某个数据项,并将数据项传递给context_object_name
		url(r'^books/(?P<pk>.+)/$', BookDetail.as_view(), name="books_detail"),
)

#django_forms的views
urlpatterns += patterns("django_forms.views",
		url(r'^contactus/$', "contactus", name="django_form_contactus"),
		url(r'^contactus/thanks/', "thanks", name="django_form_thanks", kwargs={"template_name":"django_forms/thanks.html"}),
)



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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. View:View是一个基础类视图,用于处理基本的GET和POST请求。可以继承View类,并重写get和post方法来处理相应请求。 2. ListView:ListView继承自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请求的一种方法,提供了许多内置的类视图供开发者使用。通过继承和重写方法,可以灵活地定制类视图,以满足不同的业务需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值