如何通过django-crispy-forms中的取消按钮重定向到网址?

问题描述 投票:3回答:3
class StudentCreateView(CreateView):
    model = Student
    template_name = "students/students_edit.html"
    form_class = StudentCreateForm

def get_success_url(self):
    return u'%s?status_message=Студент успішно створений' % reverse('home')

def post(self, request, *arg, **kwargs):
    if request.POST.get('cancel_button'):
        messages.info(self.request, u"Створення скасовано")
        return HttpResponseRedirect(
            u'%s?status_message=Створення скасовано'
            % reverse('home'))
    else:
        messages.success(self.request, u"Студент успішно створений") 
        return super(StudentCreateView, self).post(
            request,*arg, **kwargs)
def get_context_data(self, **kwargs):
    context = super(StudentCreateView, self).get_context_data(**kwargs)
    context['meta'] = u'Додавання студента'
    context['headtext'] = context['meta']
    return context

在此视图中,如果单击取消按钮,我将检查帖子功能

self.helper.layout[-1] = FormActions(
        Submit('add_button',u'Зберегти', css_class='btn btn-primary'),
        Submit('cancel_button', u'Скасувати'),
        )

仅在createview提交取消时无法正常工作。点击它会尝试检查表格并且脆弱地回答我,以便在我想要取消时解决表格上的所有问题。我已经将提交更改为按钮,按钮取消完全没有效果。我在stackoverflow上找到了一个变种,在按钮上添加了onclick方法,但它不适合我(当我在重定向窗口上取消或发布表单信息消息告诉我发布或取消的状态。所以当我尝试onclick方法时,它推动了过去的页面,所以没有显示信息。如何修复取消CreateView?

django forms model-view-controller views django-crispy-forms
3个回答
0
投票

self.helper.layout.append(FormActions(提交,提交('cancel_button',u'Скасувати',css_class =“btn btn-link”),))


0
投票

添加Cancel按钮并在window.location.href事件中使用onclick

self.helper.add_input(Button('cancel', 'Cancel', css_class='btn-primary',
                             onclick="window.location.href = '{}';".format(reverse('your-cancel-url-name'))))

0
投票

如果您愿意,另一种方法是按原样传递HTML:

    from crispy_forms.layout import HTML
    self.helper.layout = Layout(
            Fieldset(
                'Title',
                'field1',
                'field2',
                'field3'
            ),
            FormActions(
                        Submit('save', 'Save'),
                        HTML('<a class="btn btn-primary" href="/">Cancel</a>')
                    )
     )
© www.soinside.com 2019 - 2024. All rights reserved.