Django传递URL,获取错误NoReverseMatch Reverse for'';德鲁伊'';带参数';(';';,)';和关键字参数';{}';找不到

Django传递URL,获取错误NoReverseMatch Reverse for'';德鲁伊'';带参数';(';';,)';和关键字参数';{}';找不到,django,reverse,Django,Reverse,我是Django的新手,所以这可能是一个简单的问题。我正在尝试将url传递到my views.py中的另一个类。此url只是我的数据库表中的一个PK id。我一直收到一个错误,上面写着: Reverse for ''drui'' with arguments '('',)' and keyword arguments '{}' not found 我的代码如下: url.py url(r'^drui/(?P<disease_id>\d+)/$', 'myapp.views.drui

我是Django的新手,所以这可能是一个简单的问题。我正在尝试将url传递到my views.py中的另一个类。此url只是我的数据库表中的一个PK id。我一直收到一个错误,上面写着:

Reverse for ''drui'' with arguments '('',)' and keyword arguments '{}' not found
我的代码如下:

url.py

url(r'^drui/(?P<disease_id>\d+)/$', 'myapp.views.drui', name='drui')
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)
....

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

{% url 'arch-summary' 1945 %}
{% url 'full-archive' 2007 %}
对于以前的:


为什么
disease\u id
会有
id
属性?只有当
disease\u id
是一个实际的
disease
对象,然后您将其命名错误时,这才有效?如果它不是
disease
对象,那么您可以尝试在url操作中使用
disease\u id
。如果您认为它是一个对象,而不是一个数字,请尝试在HTML中的
中打印出来。

您好,引号对我不起作用。如果有帮助的话,错误指向drui.html代码{%url'drui'medicine\u UI\u disease\u id.id%}。另外,对于
drui\u index.html
上的
action
,您可能需要将
drui\u索引
设置为
'drui\u index'
。当我在引号中设置“drui\u index”时,我会得到一个nomatch反向的drui\u索引。不知道为什么。所以你使用的是django 1.4,而没有使用import future,好吧。我使用的是1.4,所以我删除了我的{%url drui disease_id.id}上的单引号,但我仍然得到相同的错误。只需通过硬编码一个数字再次测试:{url drui 2}就可以了。然而,这意味着这个疾病不起作用。这可能是diseaseForm.save()行的问题。它不是试图抓住一个现有的记录,而是创造一个新的记录。你对此有什么想法吗?如果我实现了后者,我得到的错误消息是:找不到参数“()”和关键字参数“{'id':}”的'drui'的反向。它没有给我这种疾病的PK。如果我实现了你的第一个选项,我会得到与我原来问题相同的错误。@user2646813,对不起。删除了以前的评论。听:您应该通知模板关于
disease\u id
,您应该在
render\u to\u response
dict参数中执行此操作,类似于将`{diseaseForm':diseaseForm},`替换为`{diseaseForm':diseaseForm,'disease\u id':这里是值},
。另外,请记住更改模板中的
“{%url'drui'disease_id.id%}”`by
“{%url'drui'disease_id%}”
。我已投票结束您的问题。只需要一点知识。试着把你的问题分成几个问题。一步一步地。再见,谢谢,杰尔德。我相信你是对的,疾病没有id属性。这可能就是我无法调用pk/id的原因。我解决了这个问题,但发现了关于此属性id的另一个错误。如果您有时间帮助我,问题就在这里:
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)
....
{% url 'arch-summary' 1945 %}
{% url 'full-archive' 2007 %}
{% url arch-summary 1945 %}
{% url full-archive 2007 %}