首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在django模板中onclick自动执行

在django模板中onclick自动执行
EN

Stack Overflow用户
提问于 2016-11-11 01:51:51
回答 1查看 818关注 0票数 0

我的python/django web应用程序出了点小问题。我试图能够启用和禁用管理区域中的一些东西,以便在前端将显示或不显示它。

单击链接后,我希望名为updatevisibilitymain的函数通过传入main.id来执行。问题是它会在页面加载时自动触发,如果你点击一个链接,所有三个链接都会触发,并根据main.id分别更新每个主要项目。我只希望一次只有一个链接,而不是让它在页面加载时自动触发。

我的问题是我的链接。

代码语言:javascript
复制
<a href="" id="{{main.id}}" onclick="{% updatevisiblitymain main.id %}" class="toggler"><i class="{% isvisible main.is_visible %}" aria-hidden="true"></i></a>

当我加载页面时,onclick会自动调用并禁用和/或启用每个页面加载。最重要的是,我还有两个for链接,它们类似于在for循环中创建的链接。如果我单击这三个对象中的任何一个,它们都将执行,并禁用或启用对象。有没有人有办法解决这个问题?

我试过在href区域中放一个#,然后onclick函数在单击时不起作用。

编辑: updatevisibilitymain

代码语言:javascript
复制
@register.simple_tag
def updatevisiblitymain(cid):
""" Updates the visibility of the main category """
print cid

main = MainCategory.objects.get(pk=cid)
visible = main.is_visible
if visible:
    main.is_visible = False
    main.save()
    logger.debug('Main Category %s has been marked false.' % main.name)
else:
    main.is_visible = True
    main.save()
    logger.debug('Main Category %s has been marked true.' % main.name)

django模板

代码语言:javascript
复制
<div class="row">
                {% if sub_cats %}
                    {% for sub in sub_cats %}
                        {% if sub.main_category_id == main_id %}
                            <div class="pull-left pad-10">
                                {% for main in main_cats %}
                                    {% if main.id == main_id %}
                                        <a href="" id="{{main.id}}" onclick="{% updatevisiblitymain main.id %}" class="toggler"><i class="{% isvisible main.is_visible %}" aria-hidden="true"></i></a>
                                        <span class="form-section">{{ main.name }}</span>
                                        <a href=""  class="gutter"><i class="{% helptext main.help_text %}" aria-hidden="true"></i></a>
                                        <a href="/MFA/DeleteItem/maincat/{{main.id}}" class="gutter"><i class="fa fa-lg fa-trash-o red" aria-hidden="true"></i></a>
                                    {% endif %}
                                {% endfor %}
                            </div>
                        {% endif %}
                    {% endfor %}
                {% endif %}
              </div>
EN

回答 1

Stack Overflow用户

发布于 2016-11-11 02:48:52

您还不了解前端代码和后端代码之间的区别。

onclick是一个Javascript事件处理程序。它应该包含在前端执行的JS代码。

Django模板语言在后端执行。它在呈现时被调用,当用户第一次请求页面时,而不是当他们与它交互时。

执行此操作的方法是编写一个JS函数,该函数使用Ajax调用更新可见状态的Django视图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40534051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档