这是为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。
答案 0 :(得分:9)
您可以使用http快捷方式中的redirect
。
from django.shortcuts import redirect
def my_view(request):
...
object = MyModel.objects.get(...)
return redirect(object) #or return redirect('/some/url/')
以下是官方文档的link。
答案 1 :(得分:9)
正如@mdegis已经建议的那样,您可以使用Django重定向功能重定向到另一个视图或网址。
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
的更多信息