【问题标题】:How do you return a complete url with get_success_url(self) in django?如何在 django 中使用 get_success_url(self) 返回完整的 url?
【发布时间】:2022-01-06 07:39:01
【问题描述】:

如何在 django 中使用 get_success_url(self) 返回一个 url,而不使用 reverse 进行通用视图?基本上,我想要的东西如下。

def get_success_url(self):
    url = self.object.url # This is a charfield with "https://stackoverflow.com/questions/ask"
    return url 

我知道人们在返回 url 时经常使用reverse,但我想像上面那样做。谢谢,如有任何问题,请写下。顺便说一句,我从来没有测试过上面的代码,但我不知道它是否可以正常工作。

【问题讨论】:

  • 您是否将 url 存储在您的对象中?
  • 是的,在self.object.url

标签: django django-models django-views django-forms django-templates


【解决方案1】:

"reverse(..)" 是 django 逻辑的一部分,用于将 url 结构存储在一个地方的 urlpatterns 中,然后在整个代码中通过名称执行请求时引用它。如果您不想遵循该逻辑 - 随时将您喜欢的任何内容存储在“object.url”中并按照您的建议返回。然后,您只是不遵循 django urlpattern 的想法。由您决定这对您的情况是否重要或“正确”。

如果 url 指向我们自己的服务器空间之外,反向无论如何都没有用,因为这些 url 不是您的 urlpattens 的一部分。

【讨论】:

  • 那么,您是说我在问题中编写的代码有效,对吧?因此,将另一个网站的链接复制到我的模型(self.object.url)中的 Charfield 中没有问题,然后就像我在问题中写的那样返回它。
  • 如果您指向另一个网站,则无法使用 reverse() - 所以是的,在这种情况下,硬编码的 url 是唯一的方法。
猜你喜欢
  • 2014-02-10
  • 1970-01-01
  • 2012-11-11
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多