【问题标题】:Passing information between web pages in Django在 Django 中的网页之间传递信息
【发布时间】:2019-01-02 03:10:09
【问题描述】:

我有一个图片库系统,我正在其中构建一个功能来编辑上传图片的属性。

@login_required
def edit(request):

    if request.method == 'POST':
        ZSN = request.POST['ZSN']
        ZSN = 'images/' + ZSN + '.'

        image = Images.objects.filter(file__startswith=ZSN)

        if image:
            return HttpResponseRedirect('/home/photo-edit', {'image':image})
        else:
            return HttpResponse("Invalid ZSN.")
    else:
        return render(request, 'cms/edit.html')

这是我在views.py 中的edit 方法。请注意,我将image 对象作为必须编辑其属性的图像。如果找到图像,那么我将重定向到主页/照片编辑,我想在其中显示一个 HTML 页面,其中包含一个 带有图像属性的表单,预填充现有属性

home/photo-edit/ URL 的views.py 方法是

@login_required
def photoedit(request):
    return render(request, 'cms/photo-edit.html', {'image':image})

但即使我将其从home/edit 发送到home/photo-edit,这里的图像也无法被识别。我该怎么做呢?他语法错了吗?

【问题讨论】:

  • 您必须在实际发送之前以某种方式获取图像值。此值在您看来是未知的。
  • image = Images.objects.filter(file__startswith=ZSN) 这不是这样做的吗?
  • home/photo-edit/ 的正文根本没有它 - 它必须发生在 def photoedit(request):return 之间的某个地方
  • 是的,但也应该在照片编辑视图中获取。将此行添加到您的照片编辑中。 image = Images.objects.filter(file__startswith=ZSN)
  • 但是 photoedit 不包含 ZSN,对吧?

标签: python html django django-models django-forms


【解决方案1】:

您可以通过将 ZSNImage PK 作为 URL 参数传递给下一个视图来解决此问题。您需要这样做,因为实际的 Image 实例无法直接传递到下一个视图。

例如:

urls.py

from . import views
urlpatterns = [
    url(r'^home/edit/$', views.edit, name='edit'),
    url(r'^home/photo-edit/(?P<photo_id>[0-9]+)/$', views.photo_edit, name='photo-edit'),
]

views.py

def edit(request):
    if request.method == 'POST':
        ...
        image = Images.objects.filter(...).first()
        if image is not None:
            return redirect('photo-edit', image.pk)
        else:
            return HttpResponse("Invalid ZSN.")
    else:
        return render(request, 'cms/edit.html')

def photo_edit(request, image_pk):
    image = get_object_or_404(Image, pk=image_pk)
    ...

请注意,在此示例中,redirect('photo-edit', image.pk) 行如何将图像 PK 传递到下一个视图。 现在您只需要实现视图 photo_edit 以适应您的用例。

让我们知道这是否能让您更接近解决您的问题。

【讨论】:

  • image = Images.objects.filter(...).first() if image is not None: return redirect('photo-edit', image.pk) 为此,它给 QuerySet 有没有属性“pk”。
  • 但仍然找不到 URL。
  • @KeerthanBhat “仍然找不到 URL”是什么意思?错误是什么?你什么时候收到这个错误?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多