猿问

如何在Django中的views.py中生成UUID路径?

我想在views.py 中使用UUID 创建一个带有ID 的对象,然后直接从我创建它的视图文件中输入其特定路径。我得到的错误是:


/item/create_item _reverse_with_prefix() 处的 TypeError * 之后的参数必须是可迭代的,而不是 UUID


所以我想知道是否有人知道如何做到这一点?


models.py:


class Item(models.Model):

    id = models.UUIDField(

        primary_key=True, default=uuid.uuid4, editable=False)

    name = models.CharField(max_length=100, blank=True)


views.py


def create_item(request):


    context = {}


    if request.method == 'POST':

        name = request.POST['name']


        item = Item(name=name)

        item.save()


        return HttpResponsePermanentRedirect(reverse('item', args=(item.id)))


    return render(request, 'items/item.html', context)



def item(request, pk):

    item = get_object_or_404(Item, pk=pk)

    

    #Code to be written


收到一只叮咚
浏览 81回答 1
1回答

回首忆惘然

item.id您应该使用以下方法将 包装在单例元组中(…,):return HttpResponsePermanentRedirect(reverse('item', args=(item.id,)))然而,您可以使用redirect(…)函数 [Django-doc],它基本上将 a 的结果包装reverse(…)在 a 中HttpResponseRedirect(…),但这提供了一个带有位置参数和命名参数的接口:from django.shortcuts import redirectreturn redirect('item', pk=item.id, permanent=True)
随时随地看视频慕课网APP

相关分类

Python
我要回答