0

我是 Django 新手,所以这可能是一个简单的问题。我正在尝试将 url 传递给我的 views.py 中的另一个类。这个 url 只是我的数据库表中的一个 PK id。我不断收到一条错误消息:

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

我的代码如下:

网址.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>

德鲁伊.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>

视图.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)
....
4

2 回答 2

1

你应该检查 django 版本。在新的url 1.5 版本中,您的语法是正确的。样品:

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

对于以前的1.4 url​​ 版本

{% url arch-summary 1945 %}
{% url full-archive 2007 %}
于 2013-08-04T16:52:26.417 回答
1

为什么disease_id会有一个id属性?只有当disease_id它是一个实际的disease对象然后你错误地命名它时才有效?如果它不是disease对象,那么您可能想尝试仅disease_id在 url 操作中使用。如果您认为它是一个对象,而不是一个数字,请尝试将其打印<p>在 HTML 中的 a 中。

于 2013-08-04T17:57:18.120 回答