Django NoReverseMatch url issue



我得到错误

"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。

最新更新