Я хочу перенаправить страницу, после сохранения модели формы. когда я нажал кнопку «Сохранить», страница перенаправилась, но ничего не сохранилось.

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})
0
Ehsan 28 Май 2017 в 08:21

2 ответа

Лучший ответ

Это приблизит вас к решению. Я не уверен, если у вас есть «updateChannelInfo» в качестве имени в urls.py (поэтому, пожалуйста, проверьте это дважды). Я думаю, что сложность здесь заключается в получении правильного каналаId для отправки

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
Katherine R 25 Мар 2018 в 12:30

Отредактируйте свой вид так,

if form.is_valid():
    form.save()
    return redirect('updateChannelInfo', channelId=self.object.id)
-1
zaidfazil 29 Май 2017 в 04:16