我的urls.py中有元素
url(r'^name/(?P<some_id>.+)/$', Class(), name='name'),
有可能以某种方式在课堂上收到some_id吗?
答案 0 :(得分:1)
你可以用装饰师做到这一点。
def accepts_some_object(f):
def new_f(request, some_object_id, *args, **kwargs):
some_object = get_object_or_404(...)
return f(request, *args, **kwargs, some_object=some_object)
return new_f
@accepts_some_object
def some_view(request, some_object)
如果您有许多接受some_object
的观点,则非常有用。
答案 1 :(得分:1)
将类实例作为视图传递时,将执行其__call__
方法。传递的参数与基于函数的视图相同(除self
作为第一个参数外)。在正则表达式中捕获的文本将作为字符串传递给函数/方法。 (Capturing text in urls)
class A(object):
def __call__(self, request, some_id):
# stuff
如果您还不知道这一点,Django将使用基于类的视图(除了基于函数),从版本1.3开始。 http://docs.djangoproject.com/en/dev/ref/class-based-views/