【问题标题】:RedirectView.as_view django and urls.pyRedirectView.as_view django 和 urls.py
【发布时间】:2017-06-11 02:46:39
【问题描述】:

我正在尝试使用 RedirectView.as_view 从 urls.py 重定向,但它不起作用(我的意思是它不会重定向,我停留在同一页面上)。我认为使用的正则表达式是正确的。这是我的代码:

from django.conf.urls import url
from . import views
from django.views.generic import RedirectView

urlpatterns = [
    url(r'^$', views.home, name='home'),
    url(r'^login/(\w*)', views.login, name='login'),
    url(r'^logout/', views.logout, name='logout'),
    url(r'^index/', views.index, name='index'),
    url(r'^login/tw.+', RedirectView.as_view(permanent=False,   url='index/'))
]

我正在尝试从这样的 URL 重定向:

http://127.0.0.1:8000/app/login/tw?oauth_token=THETOKEN&oauth_verifier=OAUTHVERIFIER

【问题讨论】:

  • 定义“它不起作用”
  • 它不重定向,我停留在同一页面

标签: python regex django


【解决方案1】:

您在要重定向到的网址前面添加一个斜杠,就像这样 + app/ in urlpattern:

urlpatterns = [
    # ...
    url(r'^app/login/tw.+', RedirectView.as_view(permanent=False, url='/index/'))
]

*edit: 这只是一个猜测它不工作 :D

*edit2:在 urlpattern 中添加 app/

【讨论】:

  • 谢谢你的回答,但我和以前一样,它不会重定向-.-
  • 你能解释一下发生了什么吗?这是您的基本 urls.py 吗? app/ 前面是否也缺少login/tw.+?我已经编辑了答案以包含该部分 url。
  • app 是我的应用程序,这是我的应用程序的 urls.py。我的主要 urls.py 没用。我认为主要问题是基于使用 httpResponse 并且我正在返回响应,我无法呈现它。我将 oauth 与 Authomatic 一起使用,我的代码基于简单的 Django 示例。再次感谢您的回答@mislav
【解决方案2】:

r'^login/(\w*)' 在重定向规则之前捕获 login/tw

【讨论】:

    猜你喜欢
    • 2012-12-10
    • 2013-07-22
    • 2022-11-13
    • 2016-12-04
    • 2011-12-09
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多