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

Forward base URL to specific page with Django

提问人:Hack-R 提问时间:11/12/2016 最后编辑:Hack-R 更新时间:11/15/2016 访问量:2747

问:

我从一位辞职的同事那里接管了一个 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 人员在很远很远的部门中设置和拥有的。

姜戈

评论

0赞 Preston 12/4/2018
Django URL 重定向的可能重复项

答:

1赞 user6835793 11/12/2016 #1
<meta http-equiv="refresh" content="0; url=http://example.com/" />

注意:将其放在头部部分。

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

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

将显示为

重定向

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

评论

0赞 Hack-R 11/12/2016
谢谢。这就是重定向 HTML 页面的方式,但是我会把它放在 Django 项目中的什么位置呢?
2赞 Sagar Ramachandrappa 11/12/2016 #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')

评论

0赞 Hack-R 11/12/2016
谢谢。这听起来没错,让我试试看。+1.第一个喜欢是 URLFopatterns 的一部分,对吧?目前主文件夹中有一个,但那里没有。文件夹中有一个。我是否在主文件夹中为此制作了新的?urls.pyviews.pyviews.pydjangoappviews.py
0赞 Hack-R 11/12/2016
我只是通过在该主文件夹中创建一个新的来尝试它,但它似乎不适合我......我明天再谈这个问题。谢谢!views.py
0赞 Sagar Ramachandrappa 11/12/2016
很高兴它帮助:)也可以将其写入 djangoapp 视图文件中,但请确保在 urls.py 中导入正确的文件。
0赞 Sagar Ramachandrappa 11/12/2016
确保在 urls.py 中导入视图类
0赞 Sagar Ramachandrappa 11/12/2016
请查看更新后的答案。我添加了另一种方法。
1赞 Alex 11/12/2016 #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'),