Dfango函数视图VS类重定向视图。如何使类视图接受参数

2024-09-30 01:33:07 发布

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

作为视图的函数知道问题,但类不知道(args,kwargs来自url,为空,post方法只有选择,但没有问题)。 两种方法都有效,但为了增加支票,我想知道如何在课堂上提问。它的init或get_redirect_url或请求中没有类似于question\u id的内容

在网址.py在

from django.urls import path
from . import views
app_name = 'polls'
ulrpatterns=[
    path('<int:question_id>/vote/', views.vote, name='vote'),
    path('<int:pk>/vote0/', views.vote0.as_view(), name='vote0'),
]

在视图.py在

^{pr2}$

Tags: path方法函数namefrompyimport视图
1条回答
网友
1楼 · 发布于 2024-09-30 01:33:07

get_redirect_url提供了名为的URL参数(**kwargs),因此您可以重写签名来捕获这些参数。例如:

class vote0(generic.base.RedirectView):
    pattern_name = 'polls:results'

    def get_redirect_url(self, *args, question_id=None, **kwargs):
        question = get_object_or_404(Question, pk=question_id)
        selected_choice = question.choice_set.get(pk=request.POST['choice'])
        selected_choice.votes +=1
        selected_choice.save()
        return super().get_redirect_url(*args, **kwargs)

或者您可以访问self.args中的位置URL参数,以及self.kwargs中的命名URL参数。在

背景

如果我们看一下"derived"实现,我们会发现如果我们把RedirectView构造成一个普通视图,它看起来像:

^{pr2}$

因此,调度程序将直接调用post(它只是包装get),或者直接调用getget(..)函数将调用并传递**kwargs参数。在

相关问题 更多 >

    热门问题