我是Django的新手,所以这可能是一个简单的问题。我正在尝试将一个url传递给views.py中的另一个类。这个url只是我数据库表中的PK id。我不断收到错误消息:
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 :(得分: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 %}
答案 1 :(得分:1)
为什么disease_id
会有id
属性?仅当disease_id
是实际disease
对象然后您错误命名它时才有效?如果它不是disease
对象,那么您可能想尝试在网址操作中仅使用disease_id
。如果您认为它是一个对象而不是一个数字,请尝试在HTML中<p>
打印出来。