我有这个观点
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'),
我该怎么做
答案 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')),