使用Django将特定页面的基址转发到

问题描述:

我从一个退出的同事接管了一个Django网络应用。目前,该应用程序的用户必须输入一个很长的URL登录到应用程序,并使用它,如:使用Django将特定页面的基址转发到

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

,而底座(是正确的说法?)的

网址http://myapp.company.com/

指向无。

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

听起来很简单,我可以用HTML或Spring框架做到这一点,但使用Django我似乎无法想出解决办法。我有一种感觉,我需要编辑urls.py,但我不确定以什么方式这样做。

我有权访问Django应用程序和托管它的服务器,但不像cPanel或任何类似于管理域的简化工具。该域本身是由一个远在遥远部门的未知IT人员建立和拥有的。

创建一个url指向django RedirectView

例如,

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') 
+0

谢谢。这听起来不错,让我试试看。 +1。首先像urlpatterns的一部分,对吧?目前在主文件夹中有一个'urls.py',但没有'views.py'。在'djangoapp'文件夹中有'views.py'。我是否在主文件夹中为此创建了一个新的'views.py'? –

+0

我只是通过在主文件夹中创建一个新的'views.py'来尝试它,但它似乎不适合我...我明天会回到这里。谢谢! –

+0

很高兴帮助:)也可以将它写入djangoapp视图文件中,但请确保您正在导入正确的文件在urls.py中。 – Sagar

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

注意:将它放在头部。

此外,对于旧的浏览器,如果你的情况下,添加一个快速链接不正确刷新:

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

将出现

重定向

这将仍然允许你去你在哪里与一个额外的点击。

+0

感谢。这就是你如何重定向一个HTML页面,但我会在哪里把它放在一个Django项目? –

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

#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'),