如何在基于类的视图中使用自定义函数

时间:2015-09-30 04:31:26

标签: python django django-views django-rest-framework

我有这个观点

class UserView(GenericAPIView):
    def get(self, request, format=None, **kwargs):
        pass

    def post(self, request, format=None, **kwargs):
        pass

这适用于此网址

url(r'^user$', UserView.as_view(),name='user'),

但我希望有自定义网址

def  custom():
      pass

我想要那个

url(r'^user/custom/$', UserView.as_view(custom),name='user'),

我该怎么做

1 个答案:

答案 0 :(得分:3)

你不能这样做。

from django.conf.urls import url
from django.views.generic import TemplateView

urlpatterns = [
    url(r'^about/', TemplateView.as_view(template_name="about.html")),
]
  

传递给as_view()的任何参数都将覆盖在上面设置的属性   类。在此示例中,我们在TemplateView上设置template_name。一个   类似的重写模式可用于url属性   RedirectView的。

如果您想要“自定义”网址,请使用基于函数的视图

网址

url(r'^user/custom/$', custom, name='user'),

<强>视图

def custom(request):
     # your custom logic
     # return something

编辑1 * 如果您想将参数传递给CBV。

class View(DetailView):
    template_name = 'template.html'
    model = MyModel
    # custom parameters
    custom = None

    def get_object(self, queryset=None):
        return queryset.get(custom=self.custom)

网址

url(r'^about/', MyView.as_view(custom='custom_param')),