Django:重定向仍然保留在同一页面中

时间:2015-01-04 02:10:22

标签: python django redirect

成功登录后,我将页面重定向到另一个名为“feeds”的应用程序。但是网址已相应更改,但内容仍然显示相同的登录页面。

views.py

def jlogin(request):
if request.method == 'POST':
    username = request.POST['uname']
    password = request.POST['pword']
    user = authenticate(username=username, password=password)
    if user is not None:
        login(request,user)
        print(user)
        return redirect('/feeds/')
    else:
        return render(request,'join/register.html')
else:
  return render(request,'join/login.html')

urls.py

urlpatterns = [
    url(r'^j$',join_views.register, name='register'),
    url(r'',join_views.jlogin, name='login'),

    ]

main urls.py

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'',include('join.urls',namespace='join')),
    url(r'feeds',include('feeds.urls',namespace='feeds')),
    url(r'^discussion/', include('discussion.urls',namespace='discussion')),

    ]

如果我这样使用,则会加载“Feed”应用内容

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^login/',include('join.urls',namespace='join')),
    url(r'',include('feeds.urls',namespace='feeds')),
    url(r'^discussion/', include('discussion.urls',namespace='discussion')),

    ]

为什么会发生这种情况?

2 个答案:

答案 0 :(得分:2)

这是因为来自

的这两行

<强> urls.py

url(r'',include('join.urls',namespace='join')),

加入/ urls.py

url(r'',join_views.jlogin, name='login'),

两个正则表达式捕获所有网址。尝试任何其他网址,例如&#34; / shmeeds /&#34;,您将再次看到相同的网页: - )

要解决此问题,请将任何非空正则表达式添加到这些url()中的一个(或两个)。

答案 1 :(得分:1)

重定向不会从视图中呈现数据。您需要使用模板和上下文

呈现请求
return redirect('/feeds/')

转到

return render(request, 'dir/template.html', {'context':value})