如何在 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>
我想在 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>