Skip to main content
 首页 » 编程设计

python之Django : redirect still remains in the same page

2024年08月26日27pander-it

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

View .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') 

网址.py

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

主要网址.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')), 
 
    ] 

如果我这样使用它会加载“feeds”应用内容

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

为什么会发生这些?

请您参考如下方法:

这是因为这两行来自

urls.py

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

和加入/urls.py

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

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

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