2015-10-07 57 views
-1

我試圖從Django中的表單發佈數據,當我點擊提交它不進入POST。我已經使用Django完成了一些POST,並且它們工作正常。在這裏,第一次渲染模板進入NO POST,這是正確的。但是,當提交表單時,它表示「無效」。Django窗體無效

urls.py

url(r'^traps/view/', 'servicios.views.viewtraps'), 

forms.py

class LimitQueryForm(forms.Form): 

    limit = forms.CharField(label='Nº de Resultados a Mostrar', max_length=250) 

模板

<form action="/services/traps/view/" method="post">{% csrf_token %} 
    {{ form_limit }} 
    <button type="submit" value="btn_limit_val" name="btn_limit_name">Aceptar</button>  
</form> 

六ews.py

def viewtraps(request): 

    connect_mysql = mdb.connect(*) 
    cursorMYSQL = connect_mysql.cursor(mdb.cursors.DictCursor) 
    cursorMYSQL.execute("""select eventname,eventid,trapoid,enterprise,community,hostname,agentip,category,severity,uptime,traptime,formatline,timestamp from snmptt order by id desc limit 500""") 
    b = cursorMYSQL.fetchall() 
    connect_mysql.close() 

    form_limit = LimitQueryForm() 

    if request.method == 'POST': 

     if form_limit.is_valid(): 

      limit = "VALID" 

      dictionary = RequestContext(request, {"buffer_data": b, "form_limit": form_limit, "limit": limit}) 
      return render_to_response("viewtraps.html", dictionary) 

     else: 

      limit = "NOT VALID" 

      dictionary = RequestContext(request, {"buffer_data": b, "form_limit": form_limit, "limit": limit}) 
      return render_to_response("viewtraps.html", dictionary) 

    else: 

     limit = "NO POST" 

     dictionary = RequestContext(request, {"buffer_data": b, "form_limit": form_limit, "limit": limit}) 
     return render_to_response("viewtraps.html", dictionary) 

我知道一些用戶告訴我,我不應該使用Django這樣,還有爲什麼我做這種方式的原因,請避免評論,由於這不是問題馬上。謝謝!

+0

什麼'form_limit.errors'說? – Sayse

+0

你是說如果我把它放在這裏我得到了什麼? '<形式行動= 「/服務/陷阱/視圖/」 方法= 「POST」> {%csrf_token%} {{form_limit.errors}} {{form_limit}} <按鈕類型=「提交「value =」btn_limit_val「name =」btn_limit_name「> Aceptar ' –

+0

或者只是檢查您的調試器窗口... theres表單上的一個字段,說明有什麼錯誤。最有可能的原因是您的表單限制是表單的新實例,沒有您的任何值傳入它 – Sayse

回答

0

問題在於form_limit的初始化,它是在不讀取請求參數的情況下創建的。嘗試改爲:

if request.method == 'POST': 
    form_limit = LimitQueryForm(request.POST) 
    ... 
else: 
    form_limit = LimitQueryForm() 

參考:https://docs.djangoproject.com/en/1.8/topics/forms/#the-view

+0

謝謝!!它的工作! –

0

清潔..

def viewtraps(request): 
    # ... db connections   
    form_limit = LimitQueryForm(request.POST or None) #<--- this was your typo 
    if form_limit.is_valid(): 
     limit = "VALID" 
     dictionary = RequestContext(request, {"buffer_data": b, "form_limit": form_limit, "limit": limit}) 
     return render_to_response("viewtraps.html", dictionary) 
    else: 
     limit = "NOT VALID" 
     dictionary = RequestContext(request, {"buffer_data": b, "form_limit": form_limit, "limit": limit}) 
     return render_to_response("viewtraps.html", dictionary) 

    dictionary = RequestContext(request, {"buffer_data": b, "form_limit": form_limit, "limit": limit}) 
    return render_to_response("viewtraps.html", dictionary) 
+0

謝謝!!它的工作! –