python - Is there a type discrepancy that is causing this 'NoReverseMatch' in Django? -
according django docs, noreversematch happens when "a matching url in urlconf cannot identified based on parameters supplied."
i getting following noreversematch error. question is: why parameter supplied not being caught url? expecting parameter of different type? i'm still not comfortable django urls.
"reverse 'recall' arguments '(<unordered_group: countries>,)' , keyword arguments '{}' not found. 0 pattern(s) tried: []"
this question revised django noreversematch url issue after suggestions tried.
edited:
images/urls.py (project level)
from django.conf.urls import patterns, include, url django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^images/', include('images_app.urls', namespace="images_app")), url(r'^associate/', include('associate.urls', namespace="associate")), url(r'^admin/', include(admin.site.urls)), )
associate/urls.py
from django.conf.urls import patterns, include, url django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^learn/', "associate.views.learn", name='learn'), url(r'^recall/(?p<ordered_group>\w+)', 'associate.views.recall', name='recall'), url(r'^$', "associate.views.index", name='index'), )
learn.html
<form action="{% url 'associate:recall' ordered_group %}" method="post"> error caught {% csrf_token %} <div> <label for="recall">enter many members of {{ ordered_group }} 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>
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})
the issue is, url pattern expecting regex matches [\w]+
1 or more wordcharacters.
recall/(?p<ordered_group>\w+)
but got object.
a better way of doing send id of ordered group object (or other unique identifier), , querying object in view again.
note if go id, url pattern regex be
recall/(?p<ordered_group>\d+)
and view:
def recall(request, ordered_group): obj = get_object_or_404(unordered_group, id=ordered_group) #rest of code..
Comments
Post a Comment