gpt4 book ai didi

python - 在 django 测试中传递参数

转载 作者:行者123 更新时间:2023-12-01 01:00:01 25 4
gpt4 key购买 nike

我正在尝试将 user.idsample.id 传递给 View 中的函数。

这是我的 urls.py (url 只接受 sample.id )

path('<int:tag>', views.task, name='task'),

这是我的views.py(views.py正在寻找user.id但找不到)

def task(request, tag):
task_user = get_object_or_404(Team, id=tag)

task_user.assigned_to = ProjectUser.objects.get(id=request.POST.get('user_id'))
task_user.save()
return HttpResponseRedirect(reverse('someOtherPage'))

这是我的 html 模板

<form method='POST' action="{% url 'task' object.id %}">
{% csrf_token %}
<label for="select1"></label>
<select name="user_id" class="mdb-select md-form" id="select1" onChange="form.submit();">
{% for user in usernames %}
<option value="{{ user.id }}"> {{ user }} </option>
{% endfor %}
</select>
</form>

这是我的测试.py

def someTest(self):

self.client.login(username='jack', password='123')
user1 = auth.get_user(self.client)
assert user1.is_authenticated

sample = Team.objects.create(sampleField='SampleName')

request = self.client.post(reverse('analyst_view_app:task_analyst', kwargs={'tag': sample.id}))

错误信息是:

SomeApp.SomeModel.ProjectUser.DoesNotExist: ProjectUser matching query does not exist.

如何将 user1.id 从我的测试传递到函数 task -> user_id

最佳答案

您没有在测试中传递任何 POST 数据。您需要发送一个表示表单数据的字典,作为 client.post() 调用的第二个参数。

request = self.client.post(
reverse('analyst_view_app:task_analyst', kwargs={'tag': sample.id}),
{'user_id': user1.id}
)

(但请注意,如果您的 View 应该始终获取登录用户,则选择框中似乎根本没有任何意义。如果不是,那么您应该更改您的测试;也许您根本不需要登录?)

关于python - 在 django 测试中传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55880242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com