好的,我在user类中有一个名为no_m的方法,我以前没有编写过decorator,但基本上,如果用户传递了这个,我需要将用户重定向到另一个URL。我在一个名为accounts的目录中创建了一个名为decorators.py的文件,我猜这个decorator是正确导入的,但是我无法让它工作。以下是我所拥有的:
def no_m(view_func):
def _wrapped_view_func(request, *args, **kwargs):
try:
if request.user.is_m():
# quick test
return HttpResponseRedirect('http://google.com')
else:
return view_func(request, *args, **kwargs)
except:
return _wrapped_view_func
它需要做的就是重定向用户,如果他们通过了测试,我不知道需要什么网址,所以现在只是谷歌。有什么想法吗?就像我说的,我以前没有写过装饰,所以对我来说都是新的。谢谢你。
另一个想法是:是否可以呈现模板页?
你在装修上漏了一步,或者说你有一步糊涂了。必须返回内部函数(
_wrapped_view_func
)的是外部函数,并且必须始终这样做:这就是调用原始函数时替代它的地方。我不知道那条例外条款是干什么用的。除了使用空白except-that-catcheseverything是个坏主意之外,包括ctrl-c之类的东西,Django函数中的异常通常由中间件处理,而不是由decorator处理。我就把它取下来。
所以代码应该是:
相关问题 更多 >
编程相关推荐