【发布时间】:2017-12-12 17:11:09
【问题描述】:
我已将我的 Django 项目部署在服务器 (dns_name_of_my_page/notes) 的子目录中。我在这个项目中的应用程序可以通过 dns_name_of_my_page/notes/app/ 访问。不幸的是,如果整个 Django 项目位于托管服务器上 public_html 的子目录“notes”中,则管理站点无法正常工作。当我进入管理站点 (dns_name_of_my_page/notes/admin/) 时,重定向到没有子目录名称的 URL (dns_name_of_my_page/adminlogin/?next=//admin/),这是不可接受的。应该是 dns_name_of_my_page/notes/adminlogin/?next=/notes/admin/
这是我在项目中的 URL 配置:
urlpatterns = [
url(r'^/?app/?', include('app.urls')),
url(r'^/?$', views.index, name='index'),
url(r'^/?admin/?', admin.site.urls),
]
这是我在应用中的 URL 配置:
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^(?P<num>[0-9]+)/?', views.num, name='num'),
]
我试过设置
FORCE_SCRIPT_NAME = '/notes/'
或
SUB_SITE = "/notes/"
在 settings.py 中,但对我没有帮助。
你有没有在子目录中运行 Django 应用时遇到过这种问题?
【问题讨论】:
-
您为项目初始化了日志记录?当您想访问管理页面时遇到什么错误?静态文件有效吗?
-
我认为你的
url(r'^/?admin/?', admin.site.urls),应该是url(r'^admin/', admin.site.urls),没有?... -
同意。 Django 可以为你处理斜杠。 docs.djangoproject.com/en/1.10/ref/settings/#append-slash
-
路由adminlogin在哪里定义?您确定
next值没有硬编码在某些视图代码中吗? -
当你使用
FORCE_SCRIPT_NAME时发生了什么?这就是你应该如何完成这项工作。您是否在当前设置中使用它?