基于 class 的视图的动态 URL 路由
Dynamic URL routing for a class-based view
我想将功能视图转换为基于 class 的视图。
这是我现在拥有的视图和 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')
将此视图转换为基于 class 的视图的正确语法是什么。
我主要好奇如何使用基于 class 的视图访问这里的主键。
谢谢!
您可以使用详细视图。
在你的 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'。通过 {{object.}} 访问客户实例的字段。
可以覆盖DetailView的属性和方法。
更多信息: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>', views.CustomerDetails.as_view(), name='customer')
在 url 中找到的参数存储在 **kwargs
中
我想将功能视图转换为基于 class 的视图。
这是我现在拥有的视图和 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')
将此视图转换为基于 class 的视图的正确语法是什么。 我主要好奇如何使用基于 class 的视图访问这里的主键。
谢谢!
您可以使用详细视图。
在你的 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'。通过 {{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>', views.CustomerDetails.as_view(), name='customer')
在 url 中找到的参数存储在 **kwargs