如何使基于类的视图接受来自URL或硬编码在URLcon中的参数

2024-03-28 19:05:15 发布

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

我正在研究一个基于类的泛型视图,它将模型名作为参数,并处理该模型名以获取更多参数。当我将型号名称硬编码到URLconf中的一个条目时,它工作得很好:

url(r'^generic/', ResultCreateView.as_view(model = 'SomeTask'))

基于类的视图的片段:

^{pr2}$

当我试图切换到通过url传递模型参数时,即:

url(r'^tasks/(?P<model>\w+)$', ResultCreateView.as_view())

我的自定义init方法不再有效。我得到:

ResultCreateView is missing a queryset. Define ResultCreateView.model, ResultCreateView.queryset, or override ResultCreateView.get_queryset()

我无法确定“model”参数从URL模式传递到view类的时间/地点。或者我不想把它放在模式中,但我不想把它放在模式中。将代码放在哪里是正确的地方,还是应该使用其他方法?在

EDIT:(额外的复杂性:我需要用一个以“model”为参数的decorator来装饰视图。)


Tags: 方法模型名称view视图url编码参数
1条回答
网友
1楼 · 发布于 2024-03-28 19:05:15

这些参数将传递给实际的请求处理程序方法,而不是传递到视图的__init__方法。因此,在GET请求的情况下:

class ResultCreateView(CreateView):
    model = None

    def get(self, request, model_name):
        self.model = get_model_object_from_modelname(model_name)
        self.form_class = my_custom_function_to_generate_a_formclass(self.model)
        self.template_name = self.model.template #template_name is an attribute I set on the model class
        return super(ResultCreateView,self).get(request, model_name)

相关问题 更多 >