我得到错误
"Reverse for 'recall' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'associate/recall/']"
当我尝试提交表单时。这是我的html:
<form action="{% url 'associate:recall' ordered_group %}" method="post">
{% csrf_token %}
<div>
<label for="recall">enter as many members of {{ ordered_group }} as you can recall </label>
<input type="text" id="recall" name="recall">
</div>
<div id="enter_button">
<input type="submit" value="enter" name="enter" />
</div>
<div id="done_button">
<input type="submit" value="done" name="done" />
</div>
</form>
"ordered_group"是一个从'learn'视图继承过来的模型对象:
urls . py:
urlpatterns = patterns('',
url(r'^learn/', "associate.views.learn", name='learn'),
url(r'^recall/', 'associate.views.recall', name='recall'),
url(r'^$', "associate.views.index", name='index'),
)
我试图使用在学习视图上下文中提交给html的ordered_group模型对象,返回到召回视图作为参数。人能做到吗?这对我来说很有意义,但正确的做法是什么?
views.py
def recall(request, ordered_group):
...
def learn(request):
...
ordered_group = ordered_groups[index]
return render(request, 'associate/learn.html', {'dataset':model, 'ordered_group':ordered_group})
我想用
在您的HTML中,您正在做:
{% url 'associate:recall' ordered_group %}
Django期望"recall" url在"associate"命名空间中,因为":"。但是,您需要在urls.py中声明名称空间,如:
url(r'^recall/', 'associate.views.recall', namespace='associate', name='recall')
如果不需要命名空间,只需:
{% url 'recall' ordered_group %}
关于"ordered_group",你需要在url中声明它,如:
url(r'^recall/(?P<ordered_group>w+)', 'associate.views.recall', namespace='associate', name='recall')
你在HTML中传递ordered_group,你在views.py中期望这个,但你不期望这个在你的URL。