2012-10-10 66 views
0

我在Ubuntu 12.04上使用Python 2.7的Django 1.4。爲什麼我的觀點不斷給出404錯誤?

我以前寫過很多視圖,但是我爲什麼會在這個視圖上出現404錯誤而感到有些莫名其妙。

urls.py:

url(r'^addNewClient/', 'gateway_interface.views.add_new_client'), 

views.py

def add_new_client(request): 
    """ 
    .. function:: add_new_client() 

     Provide a form for entering new client information 

     :param request: Django Request object 
    """ 
    ## Create a logging object 
    path = os.path.join(os.path.dirname(__file__), 'logs/') 
    filename = '{0}addNewClient.log'.format(path) 
    logfile = open(filename, 'a') 
    now = datetime.datetime.now() 
    logfile.write('\n --------------------- {0}\n'.format(now)) 

    try: 
     form = addClientInfo() 
    except: 
     output = "Handle Error: Cannot create a valid form" 
     logfile.write('{0}\n'.format(output)) 
     logfile.write('{0}\n\n'.format(traceback.format_exc())) 
     logfile.close() 
     return HttpResponse(output) 

    try: 
     data = {} 
     data.update(csrf(request)) 
     data.update({ 'form' : form }) 
    except: 
     output = "Handle Error: Cannot generate CSRF token" 
     logfile.write('{0}\n'.format(output)) 
     logfile.write('{0}\n\n'.format(traceback.format_exc())) 
     logfile.close() 
     return HttpResponse(output) 

    return render_to_response("addNewClientInfo.html", data) 

forms.py

class addClientInfo(forms.Form): 
    """ 
    .. class:: addClientInfo 

     Create a form to enter new client info 
    """ 
    my_gateway_choices = tuple(gateway_proper_names.items()) 

    # Create the post fields 
    tkz_client_name = forms.CharField(max_length = 50, required = True) 
    tkz_gateway = forms.ChoiceField(widget = forms.Select(), choices = my_gateway_choices, required = True) 
    tkz_gateway_api_id = forms.CharField(max_length = 50, required = True) 
    tkz_gateway_trans_key = forms.CharField(max_length = 50, required = True) 
    tkz_ys_api_id = forms.CharField(max_length = 50, required = True) 
    tkz_ys_trans_key = forms.CharField(max_length = 50, required = True) 

有什麼想法?

EDIT1:

我要提到我沒有收到在錯誤日誌中的任何信息。 .html文件與我的所有其他模板一起存在...在同一個地方。

+1

你試圖訪問什麼網址以及你在404頁面上得到了什麼?您的設置中是否有'DEBUG = True'? – Rohan

+0

Jeez ......這就是爲什麼你不在凌晨3點開始工作。我忘了導入我想要生成的表單。 Newb錯誤! – Rico

回答

-1

當我把DEBUG=True例外拋出,我可以確定我沒有導入我試圖使用的形式:addClientInfo()

非常新鮮的我。困難在於我收到的錯誤似乎並沒有指出這是一個問題。希望其他人可以看到,誤導性錯誤可能具有不明顯的潛在問題。

Best,all!

1

通常url模式必須非常精確。嘗試使用以下URL模式的觀點:

url(r'^addNewClient/$', 'gateway_interface.views.add_new_client'), 

這種模式可以確保只有addnewClinet/將使用$匹配。否則,url模式只匹配字符串的開頭,而不匹配整個字符串,因此addNewClient/foo等事物也將匹配。

+0

神奇的知道。謝謝! – Rico