问题描述
我想将函数视图转换为基于类的视图。
这是我现在拥有的“视图和URL”路径。
查看:
def customer(request,pk):
customer = Customer.objects.get(id=pk)
return render(request,'accounts/customer.html)
URL路径:
path('customer/<str:pk>/,views.customer,name='customer')
将这个视图变成基于类的视图的正确语法是什么? 我主要是好奇如何在这里使用基于类的视图访问主键。
谢谢!
解决方法
您可以使用“详细视图”。
在您的views.py
from django.views.generic.detail import DetailView
from .models import Customer
class CustomerDetails(DetailView):
model = Customer
template_name = 'customerdetail.html' #deafaults to customer_detail.html
在urls.py
中path('customer/<int:pk>',views.CustomerDetails.as_view(),name='customer')
将传递给customerdetail.html模板的上下文将具有默认名称“对象”。通过{{object。
了解更多信息:DetailView
,如果您想对视图进行更多控制,可以使用通用视图
from django.views.generic.detail import View
from .models import Customer
class CustomerDetails(View):
def get(self,*args,**kwargs):
customer = Customer.objects.get(id=kwargs['pk'])
return render(self.request,'accounts/customer.html)
urls.py
path('customer/<int:pk>',name='customer')
在 url 中找到的参数存储在 **kwargs