【问题标题】:URL is not changing though page redirects in django尽管 django 中的页面重定向,但 URL 没有改变
【发布时间】:2018-01-21 12:23:44
【问题描述】:

我开发了一个简单的 django 项目,其中将存储和显示照片。问题是每当我重定向到一个页面时,页面都会被加载,但地址栏中的 url 不会改变。所以当我再次刷新页面时,我得到了错误。例如,

我创建了一张专辑。为此,网址为:127.0.0.1:8000/create_album/

然后它必须重定向到存储用户所有相册的相册页面。 该网址是 127.0.0.1:8000/10/

但是当我重定向到那个页面时,我没有得到那个 url。

views.py:

    **def create_album(request):
    if not request.user.is_authenticated():
        return render(request, 'photo/login.html')
    else:
        form = AlbumForm(request.POST or None, request.FILES or None)
        if form.is_valid():
            album = form.save(commit=False)
            album.user = request.user
            album.album_logo = request.FILES['album_logo']
            album.save()
            return render(request, 'photo/detail.html', {'album': album})
        context = {
            "form": form,
        }
        return render(request, 'photo/create_album.html', context)

def detail(request, album_id):
    if not request.user.is_authenticated():
        return render(request, 'photo/login.html')
    else:
        user = request.user
        album = get_object_or_404(Album, pk=album_id)
        return render(request, 'photo/detail.html', {'album': album, 'user': user})**

页面必须重定向到 photo/detail.html。它重定向到所需的页面,但 url 没有改变。请帮我解决这个问题。

【问题讨论】:

  • 但是你认为你在哪里重定向?这段代码中没有任何重定向。
  • 渲染方法重定向到参数中指定的特定页面
  • 不,它没有。它呈现一个模板。
  • 那么如何修改那部分呢?如何使用重定向方法编写相同的内容?请帮忙

标签: python django redirect


【解决方案1】:

最好在提交表单时进行重定向。以下是更改代码以执行重定向的方法:

from django.shortcuts import render, redirect
from django.urls import reverse

def create_album(request):
    if not request.user.is_authenticated():
        return render(request, 'photo/login.html')
    else:
        form = AlbumForm(request.POST or None, request.FILES or None)
        if form.is_valid():
            album = form.save(commit=False)
            album.user = request.user
            album.album_logo = request.FILES['album_logo']
            album.save()
            return redirect(reverse('detail', kwargs={'album_id':album.id}))
        context = {
            "form": form,
        }
        return render(request, 'photo/create_album.html', context)

这假定 url/view 在您的 url 模式中被命名为 detail

您可以先尝试一下,如果不起作用,我们能否查看您的表单 HTML 代码?

【讨论】:

    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多