在我的项目中,我需要将用户重定向到一个包含参数的url
,它在urls.py中声明如下:
url(r'^notamember/(?P<classname>\w+)/$',
notamember,
name='notamember'),)
我如何将该参数放入返回的HttpResponseRedirect
中?我尝试如下:
return HttpResponseRedirect('/classroom/notamember/classname')
无论如何,这是愚蠢的,我知道,我不能把classmane作为一个参数。为了清楚起见,我的view.py是:
def leave_classroom(request,classname):
theclass = Classroom.objects.get(classname = classname)
u = Membership.objects.filter(classroom=theclass).get(member = request.user).delete()
return HttpResponseRedirect('/classroom/notamember/theclass/')
我怎样才能在url
中包含变量theclass呢?非常感谢!
5条答案
按热度按时间b1uwtaje1#
这并不复杂。
HttpResponseRedirect
的参数只是一个字符串,因此构建字符串的常规规则在这里适用。但是,我认为您不需要theclass
变量,因为它是一个ClassRoom对象,而不是字符串。您可能需要classname
。adamk在这里给了您正确的答案。不过,我们已经说过可以只使用字符串,但实际上应该使用
reverse
函数,因为您以后可能会决定更改URL结构,因此不必遍历代码查找每个硬编码URL字符串的位置,而应该在一个位置定义它们:您的urls.py文件。因此,您应该执行以下操作:watbbzwu2#
试试这个:
编辑:
这样肯定更好(丹尼尔·罗斯曼的回答):
dy2hfwbg3#
实际上,快捷方式
redirect
也使用视图名称和模型(定义了get_absolute_url
)名称。2guxujil4#
当一切似乎都不工作,我使用返回渲染,并检查它是否是后请求的情况下,任何人刷新页面
local()使参数在模板上可访问
q1qsirdb5#
如果要提交到同一个URL,则可以使用以下命令传递参数。