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

How to generate UUID paths in views.py in Django?

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

类型错误 /item/create_item _reverse_with_prefix() * 之后的参数必须是可迭代的,而不是 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

您应该使用 (…,):

item.id 包装在单例元组中
return HttpResponsePermanentRedirect(reverse('item', <b>args=(item.id,)</b>))

然而,您可以使用 redirect(…) function [Django-doc],它基本上将 reverse(…) 的结果包装在 HttpResponseRedirect(…) 中,但这提供了一个带有位置和命名参数的接口:

from django.shortcuts import <b>redirect</b>

return <b>redirect(</b>'item', pk=item.id<b>, permanent=True)</b>