如何使用urls.py创建按钮的href?

时间:2013-12-18 11:54:11

标签: django-crispy-forms

我需要在我的ModelForm中添加一个“取消”按钮,我使用的是脆弱的表单,但是当我添加href='personnel-index'重定向回列表视图时,它却没有。我已经检查了他们的文档,但没有运气也没有运气在谷歌。

3 个答案:

答案 0 :(得分:5)

有时,浏览器的“后退”按钮与网络表单中的“取消”按钮一样,但如果您完全确定需要,则可以始终以松散的形式使用HTML对象。像这样的东西会起作用:

HTML("""<a class="classes-for-styling" href="/personnel/list/">Cancel</a>""")

而且,更好的是,您可以包含上下文感知标记,以避免将网址硬编码到您的表单中:

HTML("""<a class="classes-for-styling" href="{% url 'personnel-index' %}">Cancel</a>""")

然后,您可以自行设置链接样式,使其看起来像一个按钮。

答案 1 :(得分:5)

不一定理想,但这应该处理大多数情况。

self.helper.add_input(Button('cancel', 'Cancel', css_class='btn-default', onclick="window.history.back()"))

答案 2 :(得分:1)

抱歉,我无法对现有解决方案发表评论,因为我的声誉不够好。这就是为什么我要为上面提出的HTML(crispy form object)解决方案添加代码示例的原因:

class MoodForm(forms.ModelForm):
    class Meta:
        model = Mood

    def __init__(self, *args, **kw):
        super(MoodForm, self).__init__(*args, **kw)
        self.helper = FormHelper()
        layout = Layout(
            ButtonHolder(
                Submit('Save', 'Save', css_class='button white'),
                HTML('<a class="btn btn-warning" href={% url "mood:list" %}>Cancel</a>'),
            ),  
        )
        self.helper.add_layout(layout)        

这里最重要的是:

ButtonHolder(
    Submit('Save', 'Save', css_class='button white'),
    HTML('<a class="btn btn-warning" href={% url "mood:list" %}>Cancel</a>'),
)

它呈现两个按钮&#39; Save&#39;和&#39;取消&#39;。