5
ブログアプリケーションを作成していますが、フォームを処理した後に別のURLにリダイレクトしたいと思っています。私はどちらもHttpResponseRedirectを使用したり、単純にNoReverseMatchエラーを受け取ったフォームを処理した後、別のビューにリダイレクトする方法
@login_required
def blog_form(request,author_id=None,slug=None):
context_instance=RequestContext(request)
# This view will have a valid creator_id and slug field if the
# blog is being edited and in this case the creator and user should be same
if (author_id and slug):
author = User.objects.get(pk=author_id)
blog = get_object_or_404(Entry, creator = author, slug = slug)
if blog.creator != request.user:
raise HttpResponseForbidden()
# We set the user and created date and make a new object
else:
blog = Entry(creator=request.user,created_date=datetime.datetime.now())
if request.method == 'POST':
#if the blog is not published
if 'save' in request.POST:
form = EntryForm(request.POST, instance = blog)
if form.is_valid():
form.save()
elif 'publish' in request.POST:
blog.pub_date = datetime.datetime.now()
blog.status = 1
form = EntryForm(request.POST, instance = blog)
if form.is_valid():
form.save()
#return HttpResponseRedirect ('view_blog',(),{'author_id':blog.creator.id,'slug' :blog.slug,})
return redirect ('blogs', blog.creator.id, blog.slug)
#return render_to_response('blog/blog_view.html', {'blog': blog,},context_instance=RequestContext(request))
elif 'preview' in request.POST:
form = EntryForm(request.POST, instance = blog)
if form.is_valid():
form.save()
return render_to_response('blog/blog_view.html', {'blog': blog,},context_instance=RequestContext(request))
else:
form = EntryForm(instance = blog)
return render_to_response('blog/blog.html', {'form':form}, context_instance)
私はちょうどrender_to_response使用している場合しかし、それは正常に動作しますが、それは上部のURLを変更しませんリダイレクトすることができません。私が望むのは、投稿を公開した後にユーザーを新しいページにリダイレクトすることです。また、私はトップのURLも変更したいと思います。 HttpResponseRedirectを使用して
実際には、これはドキュメントにHttpResponseRedirect(reverse( 'polls.views.results'、args =(p.id))を返します)、これはエラーをスローします。ヘルプのためにたくさん – Sachin
あなたは大歓迎です。 URLパターンを逆転させるのは厄介なことがあります。 – Brandon