2016-11-10 1 views
0

У меня проблемы с моим веб-приложением python/django. Я пытаюсь включить и отключить что-то в области администрирования, чтобы в интерфейсе либо показать, либо нет.onclick auto executing in djnago template

Как только ссылка нажата, я хочу, чтобы функция, называемая updatevisibilitymain, выполнялась с передачей в 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> 

Когда я загружаю страницу, вызывается ее авто вызываемая и отключает и/или позволяет загружать каждую страницу. Кроме того, у меня есть еще две ссылки, похожие на них, созданные в цикле for. И если я нажму на любой из трех, все они будут выполняться и либо отключить, либо включить объект. У кого-нибудь есть идеи о том, как это исправить?

Я пробовал помещать # внутри области href, а затем функция onclick не работает при нажатии.

Я ценю всю помощь.

EDIT: updatevisibilitymain

@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) 

шаблона Джанго

<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> 
+0

Я не уверен, что понимаю, что вы пытаетесь сделать. Можете ли вы отредактировать вопрос, чтобы обеспечить более ясность в отношении желаемого результата? –

+0

Надеюсь, это поможет. Я также добавляю его здесь. Как только ссылка нажата, я хочу, чтобы функция, называемая updatevisibilitymain, выполнялась с передачей в main.id. Проблема в том, что он автоматически срабатывает при загрузке страницы вместе с тем, если вы нажмете на одну ссылку все три огня и обновите каждый основной элемент соответственно в соответствии с main.id – crzyone9584

+0

Можете ли вы разместить код, в котором определяется 'updatevisiblitymain', и, возможно, остальная часть вашего Шаблон Django? –

ответ

0

Вы не поняли разницу между передним концом и фоновым кодом.

onclick является обработчиком событий Javascript. Он должен содержать JS-код, который выполняется во внешнем интерфейсе.

Django язык шаблонов выполняется на бэкэнде. Он вызывается во время рендеринга, когда пользователь сначала запрашивает страницу, а не когда они взаимодействуют с ней.

Способ сделать это, чтобы написать функцию JS, которая использует Ajax для вызова представления Django, которое обновляет видимый статус.

+0

Я думал, что делаю это неправильно. Я посмотрю, что вы предлагаете. Спасибо за предложение. – crzyone9584