2016-11-10 33 views
0

我對我的python/django網絡應用程序有點麻煩。我試圖在管理區域啓用和禁用某些內容,以便在前端顯示或不顯示。onclick在djnago模板中自動執行

一旦鏈接被點擊,我希望名爲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> 

當我加載頁面的onclick其自動調用和禁用和或啓用每一頁加載。最重要的是,我有兩個更多的鏈接,因爲它們是在for循環中創建的。如果我點擊三者中的任何一個,它們都將執行並禁用或啓用該對象。任何人有任何想法如何解決這個問題?

我試過把#放在href區域內,然後單擊時onclick函數不起作用。

我很感謝所有的幫助。

編輯: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) 

Django的模板

<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