实际服务器上的 Django 测试客户端

Django test client on an actual server

我正在测试使用 Apache 部署我的第一个 Django 项目。

我使用 Django's test client 从我自己的服务器执行 "internal" GET,它在本地工作正常,但在实际服务器上没有运行。

客户端最终收到 Django 错误消息,例如

Page not found (404) Request Method: GET Request URL: http://testserver/polls/forms/test1/

如何让客户端的 GET 在实际服务器上运行,让它在实际的 http://my_actual_server_name.[=27 上执行=] 而不是 "testserver" ?

我尝试在 settings.py 文件中设置 SERVER_NAME= ‘my_actual_server_name.something’,但不是这样。

Django 的测试客户端实际上并不发出 HTTP 请求,它只是发出一个请求对象并将其传递给您的 middleware/views。

如果您的目标是向您自己的服务器发出 http 请求,一个简单的方法是安装 requests 并执行类似

的操作
# Some server on the network
requests.get("http://myserver.com/polls/forms/test1/")

# or some server running on the same machine
requests.get("http://12.0.0.1:8000/polls/forms/test1/")

如果您只想使用某些视图的功能,您应该将该逻辑移至一个函数中,并从该视图和您的其他代码中调用它。

非常切题的旁注:

如果你好奇测试客户端是如何不发起http请求的,你可以看看the test client's code in the django sourceclient.get()调用client.generic()而调用client.request()它实例化 WSGIRequest(),然后将该对象传递给您的应用程序 - 这是您在视图中收到的 request