0

我收到 NoReverseMatch 错误:

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

我有 2 个 id 被传递给模板,这似乎是问题所在。

视图.py

def state(request, country_id, state_id):
    countrystate = State.objects.all()
    return render_to_response("template.html", {'countrystate': countrystate}) 

网址.py

url(r'^my_index/(?P<country_id>\d+)/$', 'my_App.views.main', name='main'),
url(r'^my_index/(?P<country_id>\d+)/value/$', 'my_App.views.value', name='value'),
url(r'^my_index/(?P<country_id>\d+)/option/$', 'my_App.views.option', name='option'),
url(r'^my_index/(?P<country_id>\d+)/state/$', 'my_App.views.country', name='country'),
url(r'^my_index/(?P<country_id>\d+)/state/(?P<state_id>\d+)/$', 'my_App.views.state', name='state'),

模板.html

{% load url from future %}
<form class="option_form" action="{% url "state" country.id state.id %}" method="post">

有任何想法吗?

编辑:我拥有的是国家和州的列表。所以在其他模板中,我可以从列表中选择一个国家,然后我可以从该国家中选择一个州。这就是我现在的位置。选择我的状态后,我试图渲染上面的模板,但我得到了一个 noreversematch。state.id 和 country.ids 在 url 中。我只能用 country.id 来做这件事,但不能同时用 country 和 state.id 来做。

4

2 回答 2

1

尝试类似于以下的视图:

def state(request, country_id, state_id):
    my_state = State.objects.all()[0]
    my_country = Country.objects.all()[0]
    return render_to_response("template.html", {'state': my_state, 'country': my country })

上面的函数是无意义的,但不应产生错误。

如果您通过网页上的某些选择工具定义国家和州,那么

它永远不会起作用,因为在它进入用户浏览器之前正在对其进行评估。

我并不是说你不能让表单工作,只是这种方法是错误的。

于 2013-08-21T01:28:25.993 回答
0

当您仅使用 1 个参数时,是否正在使用 my_App.views.country?尝试颠倒最后 2 个网址的顺序...

url(r'^my_index/(?P<country_id>\d+)/state/(?P<state_id>\d+)/$', 'my_App.views.state', name='state'),
url(r'^my_index/(?P<country_id>\d+)/state/$', 'my_App.views.country', name='country'),
于 2013-08-20T23:58:26.580 回答