0
처음으로 이러한 오류가 발생하고 주변을 둘러 보았지만 동일한 상황에서 오류가 발생하지 않았습니다. 사용자가 양식을 제출하면 리디렉션이 발생합니다.NoReverseMatch 오류는 어떻게 처리합니까?
제 생각에는 reverse() 함수를 사용하여 url을 반환하고 리디렉션합니다. 여기 이다의 의견이다 : 여기
def get_category(request):
categories = Category.objects.all().prefetch_related('item')
form = ItemAddToCartForm(request=request, label_suffix=':')
# need to evaluate the HTTP method
if request.method == 'POST':
# add to order..create the bound form
postdata = request.POST.copy()
form = ItemAddToCartForm(request,postdata)
# check validation of posted data
if form.is_valid():
# add to order and redirect to order page
order.add_to_order(request)
# if test cookie worked, get rid of it
if request.session.test_cookie_worked():
request.session.delete_test_cookie()
url =urlresolvers.reverse('show_order')
# redirect to order page
return HttpResponseRedirect(url)
else:
# it's a GET, create the unbound from. Note request as a Kwarg
form = ItemAddToCartForm(request=request,label_suffix=':')
# assign the hidden input the item slug
# set the test cookie on our first GET request
request.session.set_test_cookie()
context={
'categories':categories,
'form':form,
# 'menu':menu,
}
return render_to_response('category.html',context,context_instance=RequestContext(request))
그것을 지시하는
URL의 도면에 :
from django.conf.urls.defaults import *
urlpatterns = patterns(
'live.views',
url(r'^$', view="show_order",name="order_index"),
)
: 상기 뷰
def show_order(request):
if request.method == 'POST':
if postdata['submit'] == 'Remove':
order.remove_from_order(request)
if postdata['submit'] == 'Update':
order.update_order(request)
order_items = order.get_order_items(request)
page_title = 'F4L order'
order_subtotal = order.order_subtotal(request)
return render_to_response('public/order.html',context_instance=RequestContext(request))
URL을 두보기의 URL :
<form method="post" action=".">
<a href="{% url order_index %}">
{% csrf_token %}
{{ form.as_p }}
<br />
<input type="submit" value="Add To Order" name="submit">
</a>
Traceback:
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/mats-invasion/projects/f4l/f4l/live/views.py" in get_category
39. url =urlresolvers.reverse('show_order')
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in reverse
476. return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in _reverse_with_prefix
396. "arguments '%s' not found." % (lookup_view_s, args, kwargs))
Exception Type: NoReverseMatch at /menu/
Exception Value: Reverse for 'show_order' with arguments '()' and keyword arguments '{}' not found.
감사합니다 : 여기
url(r'^orders/', include('live.urls')),
url(r'^menu/$','live.views.get_category'),
(210)의 형식은 HTML입니다.
감사합니다 charl하지만 다른 문제가 html로 나타납니다. 버튼을 누른 것처럼 (양식을 작성해야 함) 페이지를 리디렉션합니다. 이걸 보았 니? –
유형이 submit (type = "submit")으로 설정된 양식의 버튼은 양식을 제출합니다. 내가 이것을 정확하게 이해하지 못했는지. – Charl
걱정하지 말아라, jus가 고쳐 졌어, 그건 내 html. 리디렉션 URL'}을 잘못된 위치에 넣었습니다. –