python - 在 Django 中测试主页返回 404
问题描述
编写 Django 测试来测试主页是否正确加载。我网站的主页不是“/”而是“/home/”,“/”和“/home”实际上重定向到“/home/”
所以我为此编写了以下测试套件:
测试main.py
from django.test import TestCase
class homepage_redirects(TestCase):
def test_redirect_homepage(self):
r1 = self.client.get('/')
r2 = self.client.get('/home')
self.assertEqual(r1.status_code, 301)
self.assertEqual(r1.url, '/home/')
self.assertEqual(r2.status_code, 301)
self.assertEqual(r2.url, '/home/')
class homepage_loads(TestCase):
def test_homepage(self):
r = self.client.get('/home/')
self.assertEqual(r.status_code, 200)
出于某种原因,homepage_redirects
测试不会失败,但homepage_loads
失败并带有以下回溯。
追溯
self.assertEqual(r.status_code, 200)
AssertionError: 404 != 200
奇怪的是,如果我去 python django shell,我应该得到一个 200 状态码。
蟒蛇壳
In[1]: from django.test import Client
In[2]: c = Client()
In[3]: c.get('/home/')
Out[3]: <HttpResponse status_code=200, "text/html; charset=utf-8">
我究竟做错了什么?
视图.py
from django.shortcuts import render
def home_page(request):
return render(request, 'app/home_page.html')
网址.py
from django.contrib import admin
urlpatterns = [
path('admin/', admin.site.urls),
path('home/', views.home_page),
]
解决方案
urlpatterns = [
path('admin/', admin.site.urls),
path('home/', views.home_page),
]
你可能想添加?在您的网址中。如
urlpatterns = [
path(r'^admin/?', admin.site.urls),
path(r'^home/?', views.home_page),
]
推荐阅读
- python - 将 python 列表数据保存为 1 个泡菜,然后将它们加载回来
- google-cloud-platform - 使用 Load Banacer 在 GCP 存储桶中托管网站时出现错误 404
- python - 将随机日期添加到时间戳值存储在列中并将结果保存在新列中
- matlab - 通过在 MATLAB 中对 32 位整数进行操作,对固定大小的整数组合进行矢量化散列/排序
- python - 运行 pip install channels 时出现以下错误
- sorting - 如何实现单链表的快速排序?
- python - Mediapipe Python - 将地标与惯用手联系起来
- java - 是否可以在没有任何抛出指令的情况下隐式抛出已检查的异常?
- android - 有什么方法可以从 Android 中的大音频文件创建 pcm 波形?
- python - Python pptx 在表格单元格中插入图像