使用 Django 将基本 URL 转发到特定页面

Posted

技术标签:

【中文标题】使用 Django 将基本 URL 转发到特定页面【英文标题】:Forward base URL to specific page with Django 【发布时间】:2017-03-26 05:20:59 【问题描述】:

我从一位辞职的同事那里接手了一个 Django Web 应用程序。目前,该应用的用户必须输入一个很长的 URL 才能登录该应用并使用它,例如:

http://myapp.company.com/djangoapp/mydir/login

的基本 URL(这是正确的术语吗?)

http://myapp.company.com/

什么都没有。

所以现在他们希望http://myapp.company.com/ 自动转发到 http://myapp.company.com/djangoapp/mydir/login

听起来很简单,我可以使用 html 或 Spring 框架来完成,但使用 Django 我似乎无法弄清楚这一点。我觉得我需要编辑urls.py,但我不确定以何种方式进行。

我可以访问 Django 应用程序和托管它的服务器,但没有像 cPanel 或任何类似的简化工具来管理域。域本身是由某个不知名的 IT 人员在很远很远的部门建立和拥有的。

【问题讨论】:

Django URL Redirect的可能重复 【参考方案1】:
<meta http-equiv="refresh" content="0; url=http://example.com/" />

注意:放在头部。

如果您添加快速链接以防无法正确刷新,则还适用于旧版浏览器:

<p><a href="http://example.com/">Redirect</a></p>

将显示为

重定向

这仍然可以让您通过额外的点击到达您要去的地方。

【讨论】:

谢谢。这就是您重定向 HTML 页面的方式,但是我会将它放在 Django 项目的什么位置呢?【参考方案2】:

创建一个指向 django RedirectView 的 url。

例如。

urls.py

url(_(r'^$'), LoginRedirectView.as_view(), name='redirect-to-login')

views.py

class LoginRedirectView(RedirectView):
    pattern_name = 'redirect-to-login'
    def get_redirect_url(self, *args, **kwargs):
        return '/djangoapp/mydir/login'

或者您可以直接将重定向url作为url属性提及

from django.views.generic.base import RedirectView

url(r'^$', RedirectView.as_view(url='http://myapp.company.com/djangoapp/mydir/login'), name='login-redirect')

【讨论】:

谢谢。这听起来很正确,让我试试。 +1。第一个喜欢是 urlpatterns 的一部分,对吧?目前主文件夹中有一个urls.py,但那里没有views.pydjangoapp 文件夹中有一个 views.py。我要在主文件夹中为此创建一个新的views.py 吗? 我刚刚通过在该主文件夹中创建一个新的views.py 进行了尝试,但它似乎对我不起作用......我明天会回到这个。谢谢! 很高兴它有帮助 :) 也可以将其写入 djangoapp 视图文件中,但请确保在 urls.py 中导入正确的文件。 确保在 urls.py 中导入视图类 请查看更新后的答案。我添加了另一种方法。【参考方案3】:

最简单的可能是在索引中添加一个装饰器来强制登录。但是登录后他们会被重定向到那个页面,我不知道这对你的情况是否有用。

#view.py
from django.contrib.auth.decorators import login_required

@login_required
def yourindex(request):
   ...

或者如果使用基于类的视图:

#urls.py
from django.contrib.auth.decorators import login_required
...
   url(r'^$' , login_required(Myindex.as_view()) , name='index'),

【讨论】:

以上是关于使用 Django 将基本 URL 转发到特定页面的主要内容,如果未能解决你的问题,请参考以下文章

使用 Django 生成的 slug URL 链接到特定页面

登录django后如何将用户重定向到用户特定的url?

如何配置Django url指向页面中的特定部分?

Ngrok 如何转发到特定的 URL?

如何将基本身份验证质询转发到报告管理器 url

Django路由转发