2013-08-04 54 views
0

我是Django的新手,所以這可能是一個簡單的問題。我正在嘗試將URL傳遞給我的views.py中的另一個類。這個URL只是我的數據庫表中的一個PK ID。我不斷收到一個錯誤,指出:Django通過URLS,獲取錯誤NoReverseMatch反向爲''drui''參數'('',)'和關鍵字參數'{}'沒有找到

Reverse for ''drui'' with arguments '('',)' and keyword arguments '{}' not found 

我的代碼如下:

urls.py

url(r'^drui/(?P<disease_id>\d+)/$', 'myapp.views.drui', name='drui') 

HTML

drui_index.html

<form class="disease_form" action="{% url drui_index %}" method="post">{% csrf_token %} 
    <div class="form-block"> 
    {{ diseaseForm.as_table }}   
    </div> 
</form> 

drui.html

<form class="disease_form" action="{% url 'drui' disease_id.id %}" method="post">{% csrf_token %} 
<div class="form-block"> 
    {{ diseaseForm.as_table }} 
    {{ indicatorInlineFormSet.as_table }} 
</div> 
</form> 

views.py

def drui_index(request): 
    diseaseForm = DiseaseForm(request.POST) 

    if diseaseForm.is_valid(): 
     new_disease = diseaseForm.save() 
     url = reverse('drui', kwargs={'disease_id': new_disease.id}) 
     return HttpResponseRedirect(url) 
    else: 
     diseaseForm = DiseaseForm() 

    return render_to_response("drui_index.html", {'diseaseForm': diseaseForm}, context_instance=RequestContext(request)) 

#I am passing disease_id to the class below 
def drui(request, disease_id): 

disease = get_object_or_404(Disease, pk=disease_id) 
.... 
+0

嗨danihp,報價沒有爲我工作。如果有幫助,該錯誤指向了drui.html代碼{%url'drui'Physician_UI_disease_id.id%}。 – nlr25

+0

另外,對於'drui_index.html'上的'action'形式,您可能需要將'drui_index'作爲''drui_index''。 – jheld

+0

當我在引用中使用'drui_index'時,我得到了drui_index的一個不匹配的反轉。不知道爲什麼。 – nlr25

回答

1

您應該檢查Django的版本。在新url 1.5 version您的語法是正確的。樣品:

{% url 'arch-summary' 1945 %} 
{% url 'full-archive' 2007 %} 

對於以前1.4 url version

{% url arch-summary 1945 %} 
{% url full-archive 2007 %} 
+0

我使用1.4,所以我在我的{%url drui disease_id.id}上放下了單引號,但我仍然得到相同的錯誤。 – nlr25

+0

剛剛通過對一個數字進行硬編碼來再次進行測試:{url drui 2}並且它可以正常工作。但是,這意味着disease_id.id不起作用。這可能是diseaseForm.save()行的問題。它不是試圖抓住現有的記錄,而是創造一個新的記錄。你有什麼想法嗎? – nlr25

+0

如果我實現了後者,我得到的錯誤信息是:未找到參數'()'和關鍵字參數'{'disease_id':}'的'drui'反向。它沒有給我這種疾病的PK。如果我實現你的第一個選項,我會得到和我原來的問題一樣的錯誤。 – nlr25

1

爲什麼disease_idid屬性?這隻適用於如果disease_id是一個實際的disease對象,然後你錯誤地命名它?如果它不是disease對象,那麼您可能要嘗試在url操作中僅使用disease_id。如果您認爲這是一個對象,而不是數字,請嘗試將其打印在HTML中的<p>中。

+0

謝謝jheld。我相信你是對的,因爲disease_id沒有id屬性。這可能是我無法撥打pk/id的原因。我解決了這個問題,但提出了有關此屬性ID的另一個錯誤。問題就在這裏,如果你有時間幫我出:http://stackoverflow.com/questions/18045410/django-object-get-reverse-for-with-arguments-and-keyword-arguments – nlr25

相關問題