Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:重定向仍保留在同一页中_Python_Django_Redirect - Fatal编程技术网

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

Python Django:重定向仍保留在同一页中,python,django,redirect,Python,Django,Redirect,成功登录后,我将页面重定向到另一个名为“feeds”的应用程序。但是url相应地改变了,但是内容仍然显示相同的登录页面 views.py def jlogin(request): if request.method == 'POST': username = request.POST['uname'] password = request.POST['pword'] user = authenticate(username=username, password=passw

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

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')
url.py

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

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

    ]
如果我这样使用,它会加载“提要”应用程序内容

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

    ]

为什么会发生这些情况?

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

return redirect('/feeds/')

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

这是因为来自

url.py

url(r'',include('join.urls',namespace='join')),
url(r'',join_views.jlogin, name='login'),
加入/url.py

url(r'',include('join.urls',namespace='join')),
url(r'',join_views.jlogin, name='login'),
两个空的正则表达式捕获所有URL。尝试任何其他url,例如“/shmeeds/”,您将再次看到相同的页面:-)


要解决此问题,请将任何非空正则表达式添加到这些
url()

中的一个(或两个)中,此处提要不是视图。它是同一项目中的另一个应用程序。但是渲染方法可以工作,我需要重定向,以避免在两个视图中执行相同的操作。哦,谢谢。。将url(r'',include('join.url',namespace='join'))更改为url(r'^$',include('join.url',namespace='join')),这将正确重定向。