2013-11-02 5 views
-1

У меня есть HttpResponseRedirect() функция, которая создает необходимый URL:Как отправить данные POST в обратном URL

мой create вид:

def create(request): 
    entry = Char_field(field=request.POST['record']) 
    entry.save() 
    return HttpResponseRedirect(reverse('db:index_page',kwargs={'redirected':'true'})) 

вид которого HttpResponseRedirect() перенаправляет является:

def index(request): 
    redirected = False 
    template= 'app/index.html' 
    try: 
     if request.POST['redirected'] is 'true': 
      redirected = True 
    except: 
     pass 
    return render(request,template,{'redirected':redirected}) 

Однако он возвращает ошибку:

NoReverseMatch at /app/create/ 
Reverse for 'index_page' with arguments '()' and keyword arguments '{'redirected': 'true'}' not found. 

urls.py:

urlpatterns = patterns('', 
    url(r'^$',views.index,name='index_page'), 
    url(r'^get_record/$',views.get_record,name='get_record'), 
    url(r'^create/$',views.create_html,name='create_path'), 
    url(r'^add/$',views.create,name='add_record') 
) 

Почему это так и можно ли отправить POST данные в index_page зрения с помощью функции reverse()?

+0

Покажите нам свой 'urls.py' с определением' дб: index_page'. – Matthias

+0

@Matthias добавлен ... –

+0

Довольно ясно: 'index_name' не принимает никаких параметров в определении URL, поэтому' reverse' не может найти местоположение и выдает ошибку. – Matthias

ответ

1

Этот вопрос не имеет ничего общего с данными POST. Вы просто пытаетесь изменить параметр, но URL-адрес для index_page не принимает его. Это было бы верно, хотите ли вы POST для этого URL-адреса.

Затем, конечно, вы не делаете на самом деле POST на этот URL-адрес, вы просто возвращаете HttpResponseRedirect, который перенаправляет 302.

Я не уверен, почему вы думаете, что вам нужен этот параметр в POST. Если вы не хотите помещать его в шаблон URL-адреса, почему бы не просто в параметрах GET?

url = reverse('db:index_page') + '?redirected=true' 
return HttpResponseRedirect(url) 

и в целях получения:

redirect = request.GET.get('redirected') 
Смежные вопросы