【问题标题】:Problems with redirect() calls in django-registrationdjango-registration 中的 redirect() 调用问题
【发布时间】:2012-04-30 13:47:20
【问题描述】:

我有一个使用 django-registration 的 Django 1.4 项目,它在用户成功注册后调用 redirect('registration_complete', (), {})。这在运行在http://127.0.0.1:8000/ 的 django 开发服务器上效果很好。

我的登台站点位于 Apache 服务器上的非根位置。类似于http://example.com/mysite。因此,当用户在那里注册时,这会导致页面未找到错误,因为 django-registration 重定向调用没有正确反转 url - 它离开了站点根目录 (mysite/)。

我正在尝试决定如何解决此问题。这是我正在考虑的:

1) 编写自定义 django-registration 后端以不同方式处理注册工作流。

2) 修补 django-registration 默认后端以不同方式处理重定向。

3) ?

解决此问题的最佳方法是什么?

【问题讨论】:

  • (我认为)让我感到痛苦的重定向示例位于此 django-registration 视图代码的第 190 行:bitbucket.org/ubernostrum/django-registration/src/27bccd108cde/…
  • 网址解析在其他地方有效吗? Django 通常不能很好地处理子目录,所以最好在单独的子域上运行项目。
  • 我对 reverse('urlname') 的所有调用都省略了 mysite 前缀。这一直是我的症结所在。为我的暂存环境使用子域是一个我没有考虑过的好主意。
  • 如果您可以为 Django 项目使用单独的子域 - 无论如何这将是最好的解决方案。
  • 我同意——一个很好的建议。很高兴知道如何可靠地让 reverse() 工作,但我现在正在研究子域解决方案。谢谢!

标签: django django-registration


【解决方案1】:

如果您将注册包作为代码的一部分,那么您只需在注册 urls 文件中所需的位置添加前缀即可。如果没有,您可以在主 url 中添加前缀,并使用 include 语句将其引导到注册 url。对你有帮助吗?

【讨论】:

  • 谢谢,但我已根据 ilvar 的建议转而使用子域。似乎是一种更强大的方法。
【解决方案2】:

最好的解决方案是由 ilvar 提供的——避免使用子目录并在单独的子域上运行项目。我还建议将该子域放在文件系统中的不同路径下。谢谢伊尔瓦!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 2019-02-01
    • 1970-01-01
    • 2016-10-06
    相关资源
    最近更新 更多