После отправки формы в django, перенаправьте на страницу, используя только что созданный pk - PullRequest
1 голос
/ 03 января 2012

Я пытаюсь перенаправить пользователя для редактирования сведений о задаче после отправки задания, но возникают проблемы с перенаправлением на страницу на основе вновь созданного ПК.Каждое представление работает без обратной строки HttpResponseRedirect.Я также пробовал arge = (instance.id) и kwargs = (instance.id) для переменной.

views.py

...
from django.http import HttpResponseRedirect, HttpResponseServerError, HttpResponseForbidden, Http404, HttpResponse
from django.core.urlresolvers import reverse
from django.shortcuts import render_to_response, get_object_or_404,render
...

def new_task(request):
    ...
    ...
    task.save()
    instance = task.save()
    return HttpResponseRedirect(reverse('task_values', instance.id))

def task_values(request, task_id):
   ...  

urls.py

from django.conf.urls.defaults import patterns, include, url
from django.http import HttpResponseRedirect
from django.views.generic.simple import direct_to_template

urlpatterns += patterns('core.views_entry',               
                   #Task viewing/editing
                   (r'^task/(?P<task_id>\d+)/$','task_values'),
                   (r'^enter/$','new_task'),

1 Ответ

1 голос
/ 04 января 2012
return HttpResponseRedirect(reverse('task_values', kwargs={'task_id': instance.id}))

Также обратите внимание, что вам не нужно сохранять задачу дважды.

Редактировать ОК, есть другая проблема.Вы не указали в своих URL-адресах конкретные имена, а это означает, что единственный способ идентифицировать их - передать полностью определенное имя представления:

reverse('core.views_entry.task_values', kwargs=...)

Или, лучше, использовать функцию url() для имениВаш URL:

url(r'^task/(?P<task_id>\d+)/$','task_values', name='task_values'),

, и вы можете использовать оригинальную версию, которую я дал выше.

Обратите внимание, что ошибка не говорит о том, что она будет enter/<id>/, просто в этом представлении она пытается создать обратный URL для перенаправления и завершается ошибкой.

...