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

问题描述 投票:0回答:3

我从一位辞职的同事那里接手了一个 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
3个回答
3
投票

创建一个指向 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 属性

from django.views.generic.base import RedirectView

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

1
投票
<meta http-equiv="refresh" content="0; url=http://example.com/" />

注意:将其放在头部。

此外,对于较旧的浏览器,如果您添加快速链接,以防它无法正确刷新:

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

将显示为

重定向

这仍然允许您通过额外的点击到达目的地。


1
投票

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

#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'),
© www.soinside.com 2019 - 2024. All rights reserved.