gpt4 book ai didi

django HttpResponseRedirect 和 ABSOLUTE_URL_OVERRIDES

转载 作者:行者123 更新时间:2023-12-02 21:42:43 25 4
gpt4 key购买 nike

我是 django (1.5.1) 的新手,对 HttpResponseRedirect 有点困惑。如果我理解正确,需要一个静态字符串,当你希望它动态重定向时,你会得到一个reverse()或一个get_absolute_url()我想我得到了 get_absolute_url 的部分,但我坚持重定向到以下网址(第一个是 mysite.urls.py 第二个是我的 strings.view.py

url(r'^users/', include('characters.urls')),
url(r'^(?P<user_id>\d+)/characters/$', views.user_characters, name='user_characters'),

从这个角度看:

if new_char_form.is_valid():
#save form with commit=False
new_char_obj = new_char_form.save(commit=False)
#set user and save
new_char_obj.user = user
new_char_obj.save()

return HttpResponseRedirect('%s/characters/' % user.id)

所以我知道我不能那样使用 HttpResponseRedirect,并且由于我不能在用户模型中包含 get_absolute_url 函数,所以我找到了下一个选项。

将其包含在我的设置中

ABSOLUTE_URL_OVERRIDES = {
'auth.users': lambda o: "/users/%s/" % o.id,
}

但是我不知道如何调用它。有人可以给我帮助吗(在这个问题上停留了一段时间)

谨致问候汉斯

最佳答案

重定向到 user_characters 的最简单方法 View 是使用 redirect 快捷方式。

from django.shortcuts import redirect

# in the view
return redirect('user_characters', user.id)

这相当于使用 HttpResponseRedirect reverse

from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse

# in the view
return HttpResponseRedirect(reverse('user_characters', args=[user.id]))

如果您想使用 ABSOLUTE_URL_OVERRIDES 覆盖 get_absolute_url User的方法模型,您必须确保 url 与名为 user_characters 的 View 的格式匹配。 .

ABSOLUTE_URL_OVERRIDES = {
'auth.users': lambda o: "/users/%s/characters/" % o.id,
}

然后您就可以调用 user.get_absolute_url()按照您的观点,并执行

return HttpResponseRedirect(user.get_absolute_url())

或者,自从 redirect快捷方式允许您传递模型实例:

return redirect(user)

关于django HttpResponseRedirect 和 ABSOLUTE_URL_OVERRIDES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20078587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com