我开发了一个简单的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。它重定向到所需的页面,但网址不会更改。请帮帮我。
答案 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代码吗?