Tôi gặp lỗi "đối số _reverse_with_prefix() sau * phải là một chuỗi, không phải int" khi tôi cố đảo ngược. Trước đây tôi đã mã hóa cứng tham số trong chế độ xem nhưng tôi đang cố gắng làm cho thông số động. Lời khuyên nào?Làm thế nào để thực hiện đúng HttpResponseRedirect ngược lại?
Xem:
def add_review(request, product_id):
p = get_object_or_404(Product, pk=product_id)
if request.method == 'POST':
form = ReviewForm(request.POST)
if form.is_valid():
form.save()
#HARDCODED: return HttpResponseRedirect('/products/1/reviews/')
return HttpResponseRedirect(reverse('view_reviews', args=(p.id)))
else:
form = ReviewForm()
variables = RequestContext(request, {'form': form})
return render_to_response('reserve/templates/create_review.html', variables)
def view_reviews(request, product_id):
product = get_object_or_404(Product, pk=product_id)
reviews = Review.objects.filter(product_id=product_id)
return render_to_response('reserve/templates/view_reviews.html', {'product':product, 'reviews':reviews},
context_instance=RequestContext(request))
urlpatterns = patterns('reserve.views',
url(r'^clubs/$', 'index'),
url(r'^products/(?P<product_id>\d+)/reviews/$', 'view_reviews'),
url(r'^products/(?P<product_id>\d+)/add_review/$', 'add_review'),
url(r'^admin/', include(admin.site.urls)),
)
Xem thêm chuyển hướng shortcut https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#redirect – super9