python-3.x - 使用重定向从表单保存后如何通过 id 传递对象?

标签 python-3.x django redirect django-urls django-url-reverse

很抱歉问这个问题。我描述了一项通过表单上传图像的服务。最重要的是,成功下载(add_picture)后,我必须访问图像页面(picture_detail)。我不明白为什么我无法转移ID。我做了以下事情:

models.py:

class Picture(models.Model):
    url = models.URLField(blank=True, verbose_name='Ссылка на изображение')
    image = models.ImageField(upload_to='pictures/%Y/%m/%d', width_field='image_width', height_field='image_height',
                              blank=True, verbose_name='Изображение')

def get_absolute_url(self):
    return reverse('home:picture_detail', args=[self.id])

views.py:

def add_picture(request, id=None):
    picture = Picture.objects.filter(is_active=True)
    # picture_form = None
    # picture = get_object_or_404(Picture, id=id)
    if request.method == 'POST':
        form = PictureCreateForm(data=request.POST, files=request.FILES)
                if form.is_valid():
        form.save()
        picture_id = form.save()
        request.session['id'] = picture_id.id
        id = request.session.get('id')
        return HttpResponseRedirect(reverse('home:picture_detail', kwargs={'id': id}))
        else:
            return render(request, 'add_picture.html', locals())
    else:
        form = PictureCreateForm()

    return render(request, 'add_picture.html', locals())

urls.py:

urlpatterns = [
    path('', views.home, name='home'),
    path('add_picture/', views.add_picture, name='add_picture'),
    path('picture_detail/<int:id>/', views.picture_detail, name='picture_detail'),
]

Bug report

结果,我应该到达这样的页面: Such page should be based on the ID after saving the form

最佳答案

id可以从form.save()的结果中获取:

from django.shortcuts import redirect

# …

if form.is_valid():
    <b>item =</b> form.save()
    return redirect('home:picture_detail'<b>, id=item.id</b>)
# …

关于python-3.x - 使用重定向从表单保存后如何通过 id 传递对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65492072/

相关文章:

Mysql + django 异常: "Commands out of sync; you can' t run this command now"

javascript 重定向到 Controller 操作 asp.net mvc

apache - 虚拟主机强制 https 并将 www 重定向到非 www,但没有其他子域

python - 我应该向项目中的每个文件添加 __future__ 语句吗?

python - python向数据库中添加数据

python-3.x - python oracle where子句包含大于比较的日期

django - 更改用户电子邮件地址

jquery - Django 中 json 请求的 403 消息

python - NLTK - 缺少停用词 - 英语

c# - 将 Python 标准输入/输出重定向到 C# 表单应用程序