2013-08-04 30 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

相关问题