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

Django含login_required视图的POST请求测试:如何传入登录凭证

解决Django测试客户端模拟登录的问题

嘿,这问题我熟!要让Django测试客户端模拟已登录状态,其实很简单,只需要用客户端的login()方法先完成登录,再发送POST请求就行。具体步骤如下:

1. 准备测试用户

首先你需要一个存在的用户账号,要么用数据库里已有的,要么在shell里临时创建一个:

from django.contrib.auth.models import User
# 创建测试用户(如果还没有的话)
test_user = User.objects.create_user(username="test_user", password="test_pass123")

2. 使用客户端登录

接下来用Client实例调用login()方法,传入用户的登录凭证:

from django.test import Client
client = Client()
# 执行登录,返回True表示登录成功
is_logged_in = client.login(username="test_user", password="test_pass123")
# 可以打印确认一下登录状态
print(is_logged_in)  # 输出True就没问题

3. 发送POST请求

现在再发送你的POST请求,客户端就会带着登录状态发起请求,不会再被重定向到登录页了:

response = client.post(
    '/recipes/',
    {'name' : 'Matar Cauliflower ', 'mass_unit' : '', 'mass_quantity' : '', 'volume_unit' : '1', 'volume_quantity' : '50', 'pieces_unit' : '', 'pieces_quantity' : ''},
    follow=True
)
print(response.status_code)  # 应该返回200或者你期望的状态码

额外说明

  • 如果你的项目用了自定义用户模型,登录时可能需要用对应的认证字段(比如email)代替username,具体看你AUTH_USER_MODEL的配置。
  • client.login()方法会处理会话和认证cookie,后续这个client实例的所有请求都会保持登录状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:26:08