我有一种更新条目的方法:
@require_POST
def update(request, uuid):
posti = get_object_or_404(Post, uuid=uuid)
f = PostForm(request.POST)
if f.is_valid():
posti.title = request.POST['title']
posti.text = request.POST['text']
posti.save()
return HttpResponseRedirect(django.urls.reverse('posti:detail', args=(posti.uuid,)))
else:
messages.error(request, "No title in form")
return render(request, 'posti/detail.html', {'form': f})
我正在尝试用一种情况测试这种方法:
def create_post():
"""
:rtype : Post
"""
data = {'title': 'Esto es un titulo', 'text': 'Esto es un texto de prueba'}
post = Post.create_post(data['title'], data['text'])
post.save()
print('The UUID is: ', post.uuid)
return post
def test_updating_post_with_no_title(self):
"""
A post with no title should not be saved
:return:
"""
p = create_post()
print('(test) The UUID is: ', p.uuid)
data = {'title': '', 'text': 'Esto es un texto de prueba'}
url = reverse('posti:update', args=(p.uuid,))
response = self.client.post(url, data, follow=True)
self.assertEqual(response.status_code, 200)
self.assertContains(response, "No title in form")
无论我做什么,我总是会收到此错误:
django.urls.exceptions.NoReverseMatch:反向使用“ update” 找不到参数'('',)'。尝试了1种模式: ['posti / update /(?P [0-9a-zA-Z -_] +)/ $']
在两种方法中,都使用print(p.uuid)
来显示UUID,但是从下到上没有到达第四行。如果显示“未找到带有参数'('',)'的地方,则应该显示UUID。为什么不显示?
编辑:UUID是SmallUUID。我不知道这是否有问题。