已正确配置路径仍出现Not Found: /users/错误,寻求技术协助
路径配置正确但仍出现Not Found: /users/错误排查求助
已正确配置相关路径,但持续出现Not Found: /users/错误,恳请协助排查。以下是相关配置:
表单提交路径
<form method="post" action="/users/" id="archive-form">
JavaScript请求路径
fetch("/users/", {
urls.py配置
path("users/", views.users, name="users"),
views.py代码
def users(request): active_users = User.objects.filter(status='active') archive_users = User.objects.filter(status='archived') user_form = UserForm() if request.method == 'POST': user_form = UserForm(request.POST, request.FILES) if user_form.is_valid(): user = user_form.save(commit=False) user.save() # log_message = f"Added user with ID {user.id}" Log.objects.create(user=user.first_name, role=user.job_title, date=timezone.now(), action=log_message) # return redirect('app:users') print('1') user_id = request.POST.get('user_id') user = get_object_or_404(User, id=user_id) if user: if user.status == 'active': user.status = 'archived' log_message = f"Archived user with ID {user_id}" elif user.status == 'archived': user.status = 'active' log_message = f"Unarchived user with ID {user_id}" user.save() Log.objects.create(user=user.first_name, role=user.job_title, date=timezone.now(), action=log_message) return redirect('app:users')
排查方向
- 核对URL路由层级
- 确认
path("users/",...)是写在项目根路由urls.py,还是app的子路由里。如果是app子路由,要检查根路由是否添加了path('app/', include('app.urls'))这类包含配置——要是没加,子路由的users/不会被注册到根路径下,直接访问/users/就会404。
- 确认
- 验证路由是否实际注册
- 开启DEBUG模式,访问404页面时,页面会列出所有已注册的路由表。看看
/users/有没有出现在列表里,要是没有,说明路由配置根本没生效。
- 开启DEBUG模式,访问404页面时,页面会列出所有已注册的路由表。看看
- 检查命名空间与路径匹配
- 你在redirect里用了
app:users,说明路由带命名空间。要确认app的urls.py里是否设置了app_name = 'app',同时表单、fetch的路径要和实际路由一致——如果实际路由是/app/users/,硬编码的/users/肯定会找不到。
- 你在redirect里用了
- 简化测试定位问题
- 把视图临时换成最简单的测试函数:
然后替换urls里的对应项,再访问def test_users(request): return HttpResponse("Test")/users/。如果还是404,基本可以确定是路由层级的问题;如果能正常返回,再逐步恢复原有视图代码排查逻辑错误。
- 把视图临时换成最简单的测试函数:
内容的提问来源于stack exchange,提问作者J R
相关产品推荐
相关产品推荐

