这是为我在Django中发布的应用程序编写的视图。问题是,在填写更新表单并提交它之后,成功地发生了。但是它给用户造成了混乱,因为那里有相同的HTML页面,我如何重定向到更新后的对象?
def post_update(request,id=None):
instance=get_object_or_404(Post,id=id)
if instance.created_user != request.user.username :
messages.success(request, "Post owned by another user, You are having read permission only")
return render(request,"my_blog/denied.html",{})
else :
form=PostForm(request.POST or None,request.FILES or None,instance=instance)
if form.is_valid():
instance=form.save(commit=False)
instance.save()
context={ "form":form,
"instance":instance }
return render(request,"my_blog/post_create.html",context)ThankYou。
发布于 2017-03-06 05:27:20
您可以使用http快捷方式中的redirect。
from django.shortcuts import redirect
def my_view(request):
...
object = MyModel.objects.get(...)
return redirect(object) #or return redirect('/some/url/')这是官方文档的link。
发布于 2017-03-06 06:49:40
正如@mdegis所建议的,您可以使用Django重定向函数来重定向到另一个视图或url。
from django.shortcuts import redirect
def view_to_redirect_to(request):
#This could be the view that handles the display of created objects"
....
perform action here
return render(request, template, context)
def my_view(request):
....
perform form action here
return redirect(view_to_redirect_to)您可以使用reverse()方法和要重定向到的视图的命名url将位置参数或关键字参数传递给重定向快捷方式。
在urls.py中
from news import views
url(r'^archive/$', views.archive, name='url_to_redirect_to')在views.py中
from django.urls import reverse
def my_view(request):
....
return redirect(reverse('url_to_redirect_to', kwargs={'args_1':value}))有关反向Here的更多信息
https://stackoverflow.com/questions/42614172
复制相似问题