基于类的视图的动态URL路由

2024-06-28 20:08:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将函数视图转换为基于类的视图

这里是观景台;我现在拥有的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')

将此视图转换为基于类的视图的正确语法是什么。 我主要想知道如何使用基于类的视图访问主键

谢谢


Tags: 函数路径视图idurlgetreturnobjects
2条回答

如果希望在视图中获得更多控制,可以使用通用视图

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)

url.py

path('customer/<int:pk>', views.CustomerDetails.as_view(), name='customer')

在url中找到的参数存储在**kwargs

可以使用详图视图

在您的视图中.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

在URL.py中

path('customer/<int:pk>', views.CustomerDetails.as_view(), name='customer')

将传递给customerdetail.html模板的上下文将具有默认名称“object”。通过{{object<;field_name>;}访问客户实例的字段。 您可以覆盖DetailView的属性和方法

有关更多信息:DetailView

相关问题 更多 >