虽然django中的页面重定向,但URL并未更改

时间:2018-01-21 12:23:45

标签: python django redirect

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

我制作了一张专辑。为此,网址是:127.0.0.1:8000 /create_album /

然后必须重定向到存储所有用户专辑的专辑页面。 该网址为127.0.0.1:8000/10 /

但是当我重定向到该页面时,我没有收到该网址。

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。它重定向到所需的页面,但网址不会更改。请帮帮我。

1 个答案:

答案 0 :(得分:0)

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

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)

这假设您的网址格式中的网址/视图名为detail

你可以先试试这个,如果它不起作用,我们可以看到你的表格的HTML代码吗?