【问题标题】:Handle enter button in change_form Django在change_form Django中处理输入按钮
【发布时间】:2012-06-12 15:18:36
【问题描述】:

我是 Django 和 python 的新手。我有个问题。有没有办法,在单击输入按钮后被重定向到同一个 change_form 页面而不被 Django 传递到 change_list 页面?这是我的意思的用户界面:

(所有字段集下的输入按钮) 希望你能明白我的意思并给我一些回应。谢谢 :)。

【问题讨论】:

  • 您的输入按钮有什么作用,它与默认提供的保存按钮有何不同?
  • 是的,它不一样。我希望我的输入按钮可以将“Kode Produk”字段集中的实例传递给表格行。但我不知道怎么做。
  • 有没有与我的问题相同或几乎相同的链接?还有答案或提示。谢谢你:)。
  • 如果您的问题得到解答,请标记合适的答案
  • 哦,对不起,我是新手。是否通过单击每个答案的清单标记? :D.

标签: python django button


【解决方案1】:

更改 submit_line.html 模板

我变了:

{% if show_save %}<input name="_save" type="submit" value="{% trans 'Save' %}" class="default" {{ onclick_attrib }}/>{% endif %}

到:

{% if show_save %}<input name="_continue" type="submit" value="{% trans 'Save' %}" class="default" {{ onclick_attrib }}/>{% endif %}

这将导致默认保存按钮充当保存并继续按钮。

stackoverflow-questiondjango documentation 可以帮助您正确更改 submit_line-template

完成“submit_line.html”:

{% load i18n %}
<div class="submit-row">
{% if show_save %}<input type="submit" value="{% trans 'Save' %}" class="default" name="_continue" {{ onclick_attrib }}/>{% endif %}
{% if show_delete_link %}<p class="deletelink-box"><a href="delete/" class="deletelink">{% trans "Delete" %}</a></p>{% endif %}
{% if show_save_as_new %}<input type="submit" value="{% trans 'Save as new' %}" name="_saveasnew" {{ onclick_attrib }}/>{%endif%}
{% if show_save_and_add_another %}<input type="submit" value="{% trans 'Save and add another' %}" name="_addanother" {{ onclick_attrib }} />{% endif %}
</div>

【讨论】:

  • 但是,您的意思是回车按钮的作用类似于“保存并继续编辑”按钮,对吧?或者我真的不明白你的意思?然后,它会导致刷新页面吗?因为我不需要刷新页面。谢谢你:)。
  • 如果您点击进入浏览器触发该特定 html 表单的默认提交按钮。在这种情况下,它是“保存”按钮。通过更改该按钮的名称属性,它将起作用比如保存并继续按钮
  • 好吧,这和我想的一样。但是,我的意思是该按钮将直接保存我刚刚填写的所有字段集?如果是,它将保存在哪里?更改列表 ?真的非常感谢你:D。
  • 一切都会保存得很好:) django 正在解释该名称属性的值。如果它是“_save”,它会将您重定向到 change_list-view,如果它是“_continue”,它将将您重定向到与以前相同的视图。
  • 哦,这对我来说真的是一个热门答案!非常感谢:)。
【解决方案2】:

如果您在谈论 django 管理员,则有三个按钮:

  • 保存并添加新的
  • 保存并继续编辑(你需要点击这个)
  • 保存

如果您在谈论自己的应用程序,请在表单中添加下一个参数,在表单验证中捕获它并相应地重定向

编辑:

我看到您创建了一个自定义按钮,您可以覆盖 ModelAdmin 中的保存/输入方法并重定向到您想要的任何位置。只需在表单中添加隐藏的下一个输入即可。

示例:

settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
    # other stuff
    "django.core.context_processors.request",
)

您的变更表单模板:

<input type="hidden" name="next" value="{{request.path}}" />

【讨论】:

  • 对不起,你能不能给一些示例代码或伪代码,以便我理解清楚。对不起,我真的是一个新手:)。
  • 但是我使用模型中的字段集,我怎样才能将它们设置为隐藏?对不起,但我仍然不知道你的意思 {{request.path}} ?真的很抱歉,非常感谢您的友好回复:)。
【解决方案3】:

回车按钮,将导致底层 html-form 被提交。 这与 django 或 python 无关,是特定于浏览器的。

django change_form 有三个提交按钮,将使用最后一个。

有多种方法可以做到这一点:

  • 覆盖 hange_form-template 并添加一些 jquery 以响应按键事件(回车)并触发选择的按钮。

  • 重新排列这些按钮

【讨论】:

  • 哦,我明白了,但是有没有不使用 jquery 的方法? js 可能吗? :S.
  • 我发布了另一个答案:)
猜你喜欢
  • 2011-06-26
  • 1970-01-01
  • 2013-08-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
相关资源
最近更新 更多