django - 保存模型后如何重定向页面

时间:2017-05-28 05:21:10

标签: python django redirect

我想在保存模型后重新编辑页面。当我按下保存按钮,页面重定向,但没有保存任何东西。

def channelAdd(request):
    if request.method == 'POST':
        form = ChannelForm(request.POST)
        if form.is_valid():
            channelid = form.cleaned_data['channelid']
            form.save()

            return HttpResponseRedirect(reverse('updateChannelInfo', args=[channelid]))

    else:
        form = ChannelForm()

    return render(request, 'web/channelAdd.html', {'form':form})

2 个答案:

答案 0 :(得分:1)

这将使您更接近解决方案。如果您有“更新渠道信息”,那么我并不乐观。作为urls.py中的名称(所以请仔细检查)。我认为这里的复杂性是要发送正确的channelId

def channelAdd(request):
    if request.method == 'POST':
        form = ChannelForm(request.POST)
        if form.is_valid():
            channelid = form.cleaned_data['channelid']
            form.save()
            return HttpResponseRedirect(reverse('updateChannelInfo', args = [self.object.id])))
    else:
        form = ChannelForm()
    return render(request, 'web/channelAdd.html', {'form':form})

如果您愿意分享您的urls.py和forms.py文件,这有助于将正确的名称转换为参数

我在表单提交后使用动态直接成功的另一种方法是使用

def add_channel (request):
    if request.method == 'POST':
        form = ChannelForm(request.POST)
        if form.is_valid():
            channel.save()
            return HttpResponseRedirect(reverse('channel_detail', args=[channel.id]))
    else:
        form = ChannelForm()
        return render(request, 'channel_example.html', {'form': form})

答案 1 :(得分:-1)

像这样编辑您的视图,

if form.is_valid():
    form.save()
    return redirect('updateChannelInfo', channelId=self.object.id)