我有一个自定义的基于类的视图

# myapp/views.py
from django.views.generic import *

class MyView(DetailView):
    template_name = 'detail.html'
    model = MyModel

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

我想像这样传入slug参数(或视图的其他参数

MyView.as_view(slug='hello_world')

我需要重写任何方法才能做到这一点吗?

推荐答案

传递给as_view方法的每个参数都是View类的一个实例变量.这意味着要添加slug作为参数,必须在子类中将其创建为实例变量:

# myapp/views.py
from django.views.generic import DetailView

class MyView(DetailView):
    template_name = 'detail.html'
    model = MyModel
    # additional parameters
    slug = None

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

那应该会有MyView.as_view(slug='hello_world')个工作.

如果通过关键字传递变量,请使用埃里克森先生建议的:https://stackoverflow.com/a/11494666/9903

Django相关问答推荐

Htmx如何从事件中访问数据?

Django mods.py我想要一个函数转到一个变量

django-filter compose 过滤的 url

按下按钮刷新在html文件中显示的变量

在 Django 4.1 中提交表单之前显示数据

Django 注释(),计数()

在 Django 模板中呈现标签名称而不是整数字段

Django ModelForm提交按钮不起作用

Django - 使用在 URL 中传递的父类主键从子类中过滤对象

如何让两个模型相互引用 Django

使用基于类的 UpdateView 在 Django 中更新用户模型

Django 密码以什么格式存储在数据库中?

测试 Django ModelForm 是否有实例

django- nginx: [emerg] open() "/etc/nginx/proxy_params" 在 /etc/nginx/sites-enabled/myproject:11 中失败(2:没有这样的文件或目录)

在 Django 中测试different layers的最佳实践是什么?

如何在 Django/Python 中减go 两个日期?

Django将HttpResponseRedirect返回到带有参数的url

django 应用基于条件的样式类

ModelForm 上的 Django 和字段集

Heroku & Django:OSError: No such file or directory:'/app/{myappname}/static'