2014-12-09 3 views
1

когда пользователь нажимает кнопку make thumbnail, он будет вызывать def thumb в представлении , а затем оказывать http://127.0.0.1:8000/upload/thumbДжанго перенаправление URL с параметром

Я хочу изменить для перенаправления URL-адрес с id number в базе данных (Item.objects. все()): http://127.0.0.1:8000/upload/thumb/123

Но не получите его. Пожалуйста, помогите мне. Большое вам спасибо.

Мой код:

urls.py

urlpatterns = patterns('', 
    url(r'^$', views.background, name='background'), 
    url(r'^thumb/(?P<result>\d+)$', views.thumb, name='thumb'), 

views.py

def thumb(request,result): 
    if request.method=="POST": 
     photoid = request.POST['photoid'] 
     photowidth = request.POST['photowidth'] 
     item=Item.objects.filter(id=photoid) 
     return redirect(reverse('imageupload:thumb',kwargs={'result':photoid,'item':item })) 

return HttpResponseRedirect(reverse('imageupload:background')) 

шаблоны:

<form action="{% url 'imageupload:thumb' i.id %}" method="POST" id="create_post"> 
+0

Возможно, вы имели в виду использовать kwargs = {'item': item} вместо args. Обратите внимание, однако, что если вы используете именованные параметры в определении вашего URL-адреса, ваше имя kwarg должно соответствовать. aka: kwargs = {'result': item} – RutledgePaulV

+0

Я думаю, в целом, однако, вы можете быть немного смущены, поскольку код, похоже, не имеет большого смысла, и есть несколько проблем. Вместо того, чтобы размещать кучу кода, вы можете указать, что именно вы пытаетесь сделать? – RutledgePaulV

ответ

3

Когда вы используете именованный параметр, вам нужно сделать например:

return redirect(reverse('imageupload:thumb',kwargs={'result':item})) 

И в вашем forms.py, вам также нужно изменить ваш action к этому:

action="{% url 'imageupload:thumb' result %}" 

Вы также можете получить доступ к result в views.py так:

def thumb(request, result): 
    print result