我尝试将user.id
和sample.id
传递给视图中的函数。
这里是我的urls.py(网址只接受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>
这里是我的tests.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匹配查询不存在。
如何将测试中的user1.id
传递给函数task
-〉user_id
?
1条答案
按热度按时间ewm0tg9j1#
您在测试中没有传递任何POST数据。您需要发送一个表示表单中数据的字典,作为
client.post()
调用的第二个参数。(Note但是,如果您的视图应该总是获得登录用户,那么在选择框中似乎根本没有任何点。也许您根本不需要登录?)