使用Django将特定页面的基址转发到
我从一个退出的同事接管了一个Django网络应用。目前,该应用程序的用户必须输入一个很长的URL登录到应用程序,并使用它,如:使用Django将特定页面的基址转发到
http://myapp.company.com/djangoapp/mydir/login
,而底座(是正确的说法?)的
指向无。
所以现在他们想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')
<meta http-equiv="refresh" content="0; url=http://example.com/" />
注意:将它放在头部。
此外,对于旧的浏览器,如果你的情况下,添加一个快速链接不正确刷新:
<p><a href="http://example.com/">Redirect</a></p>
将出现
重定向
这将仍然允许你去你在哪里与一个额外的点击。
感谢。这就是你如何重定向一个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'),
谢谢。这听起来不错,让我试试看。 +1。首先像urlpatterns的一部分,对吧?目前在主文件夹中有一个'urls.py',但没有'views.py'。在'djangoapp'文件夹中有'views.py'。我是否在主文件夹中为此创建了一个新的'views.py'? –
我只是通过在主文件夹中创建一个新的'views.py'来尝试它,但它似乎不适合我...我明天会回到这里。谢谢! –
很高兴帮助:)也可以将它写入djangoapp视图文件中,但请确保您正在导入正确的文件在urls.py中。 – Sagar