Django登录成功后跳转至articles页面出现404错误求助
Django登录成功后跳转至articles页面出现404错误求助
看起来你遇到了一个典型的Django路由配置错误,问题出在登录成功后的跳转目标上,我来帮你梳理一下:
错误原因分析
你在users/views.py的signin函数里写了:
return redirect('articles/index.html')
但这个写法是错误的:
- Django的
redirect()函数接收的是URL路径或者URL名称,而不是模板文件的路径 - 你的URL配置里,articles的入口是
path('articles', include('articles.urls')),而articles/urls.py里的根路径对应articles_view视图,正确的访问URL是http://127.0.0.1:8000/articles/,根本不存在articles/index.html这个路由规则,所以会返回404。
解决方案
把signin函数里的跳转代码改成下面两种方式之一即可:
方式1:使用URL名称(推荐)
因为你已经给articles的视图设置了name='articles_view',直接用这个名称跳转,这样后续修改URL路径也不用改这里的代码:
def signin(request): if request.method =='POST': username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username, password=password) if user is not None: login(request, user) return redirect('articles_view') # 这里改为URL名称 else: messages.error(request, "Bad Credentials") return redirect('home')
方式2:使用绝对URL路径
直接写完整的URL路径:
return redirect('/articles/')
额外说明
记住一个核心逻辑:在Django里,用户访问的是URL路由,路由匹配到对应的视图函数,视图函数再去渲染模板文件。你不能直接跳转模板文件的路径,必须通过路由来间接访问。
备注:内容来源于stack exchange,提问作者Peanut Gallery
相关产品推荐
相关产品推荐

