Python Django:重定向仍保留在同一页中
成功登录后,我将页面重定向到另一个名为“feeds”的应用程序。但是url相应地改变了,但是内容仍然显示相同的登录页面 views.pyPython 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
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')),这将正确重定向。