You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django首页测试返回404,重定向测试用例相关技术咨询

解决Django首页测试404问题的步骤

看起来你遇到的404问题大概率是URL配置或者视图映射的问题,咱们一步步排查解决:

1. 先检查URL配置是否正确

这是最常见的根源。你需要确保项目或应用的urls.py里正确配置了三个路径的规则:/、/home和/home/。

举个正确的配置示例:

# your_app/urls.py
from django.urls import path, re_path
from django.views.generic.base import RedirectView
from .views import home_view  # 导入你的首页视图

urlpatterns = [
    # 核心:配置/home/对应的视图,确保这个视图能正常返回内容
    path('home/', home_view, name='home'),
    
    # 重定向根路径/到/home/(永久重定向301)
    path('', RedirectView.as_view(url='/home/', permanent=True)),
    
    # 重定向/home到/home/,这里用re_path匹配不带斜杠的路径
    re_path(r'^home$', RedirectView.as_view(url='/home/', permanent=True)),
]

如果你的项目根urls.py是单独管理的,别忘了把应用的URL包含进去:

# project_root/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('your_app.urls')),  # 确保包含了应用的URL配置
]

2. 确认首页视图能正常工作

如果/home/返回404,说明视图本身有问题。检查你的视图函数是否正确,模板是否存在:

# your_app/views.py
from django.shortcuts import render

def home_view(request):
    # 确保home.html模板在your_app/templates/目录下
    return render(request, 'home.html')

3. 完善你的测试用例

你的测试代码有截断,而且可以用Django提供的assertRedirects更简洁地验证重定向,同时要新增对/home/本身的200状态码测试,确保首页能正常加载:

# tests_main.py
from django.test import TestCase

class HomepageRedirectsTest(TestCase):  # 遵循PEP8的类名规范
    def test_root_url_redirects_to_home(self):
        response = self.client.get('/')
        # assertRedirects会自动检查状态码和目标URL
        self.assertRedirects(response, '/home/', status_code=301)

    def test_home_without_slash_redirects(self):
        response = self.client.get('/home')
        self.assertRedirects(response, '/home/', status_code=301)

    def test_home_with_slash_loads_successfully(self):
        # 关键测试:确保首页本身能正常返回200,不会404
        response = self.client.get('/home/')
        self.assertEqual(response.status_code, 200)
        # 可选:验证是否使用了正确的模板
        self.assertTemplateUsed(response, 'home.html')

4. 检查APPEND_SLASH设置

Django默认APPEND_SLASH = True,会自动给不带斜杠的URL添加斜杠并重定向。如果你在settings.py里手动把它设为False,那/home就不会自动重定向到/home/,这时候就需要手动添加我们第一步里的重定向规则。

5. 确认测试文件被Django识别

确保你的测试文件在应用的tests目录下,或者文件名符合Django的测试发现规则(比如以test_开头,不过tests_main.py也能被识别,只是test_homepage.py更清晰)。

按照上面的步骤排查后,应该就能解决404的问题了。

内容的提问来源于stack exchange,提问作者zero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:58:15