我收到NoReverseMatch错误:
Reverse for 'state' with arguments '('', '')' and keyword arguments '{}' not found.
我有2个ID传递给模板,这似乎是问题所在。
views.py
def state(request, country_id, state_id):
countrystate = State.objects.all()
return render_to_response("template.html", {'countrystate': countrystate})
urls.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'),
template.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。
答案 0 :(得分: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 })
上述功能是荒谬的,但不应产生错误。
如果您通过网页上的某个选择工具定义国家/地区和州,则
它永远不会起作用,因为它会在进入用户浏览器之前进行评估。
我并不是说你不能让表单工作,只是这种方法是错误的。
答案 1 :(得分: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'),