为什么在Django上无法通过反向解析此网址?

时间:2018-07-24 00:48:18

标签: django django-urls

我有一种更新条目的方法:

@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。我不知道这是否有问题。

0 个答案:

没有答案