0x4*_*B1D 4 django django-views
我在我的服务器上运行了几个项目实例,如下所示:
http://0.0.0.0/one
http://0.0.0.0/two
Run Code Online (Sandbox Code Playgroud)
我还有一个可通过以下方式访问的激活视图:
http://0.0.0.0/one/activate/u/1/c/123
Run Code Online (Sandbox Code Playgroud)
当我从django shell对此视图执行reverse()时,给出的URL为:
/activate/u/1/c/123
Run Code Online (Sandbox Code Playgroud)
所以它不包括/one服务器路径.但是,当我使用reverse()查找要在项目中的其他位置发送的电子邮件的页面路径时,reverse()似乎返回完整的服务器路径+视图路径,如下所示:
/one/activate/u/1/c/123
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?
reverse()应该包含此服务器路径,以便您可以在链接中使用它,它将工作,而无需更改代码中的任何其他内容.但是manage.py shell没有设置合适的路径前缀; 该代码发生在wsgi/etc处理程序中.这是Django bug#16734(我偶然报道了:p).
你可以通过django.core.management.base.set_script_prefix手动调用来解决这个问题,大概是在你的settings.py.例如:
# when running through wsgi, this will get overriden
# but it's needed for manage.py
from django.core.urlresolvers import set_script_prefix
set_script_prefix('/one/')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
486 次 |
| 最近记录: |