我已经读过,在成功处理发布数据后,你应该使用HttpResponseRedirect重定向到另一个页面 . 我正在为学习目的构建一个URL缩短器,来自views.py的代码如下所示:(不工作)
def makeurl(request):
# get url from form
post_url = request.POST['url']
# shorten the url and have the short code returned
shortened_url = shorten_url(post_url)
return HttpResponseRedirect('create')
def create(request):
return render(request, 'shorturl/create.html',
{'shortened_url': shortened_url})
当我的表单被提交以缩短输入URL时,将调用'makeurl',其中计算并返回缩短的URL(shortened_utl) . 然后我调用'create',它将呈现'shortened_url需要向用户显示的页面 .
问题是,如果我要使用HttpResponseRedirect,我无法将'shortened_url'变量传递给我的'create'视图进行渲染 . 任何人都可以建议我吗?我是django的新手,干杯
1 回答
您可以使用重定向轻松传递参数,至少有三种方式:
作为命名参数段
作为查询字符串参数
作为会话变量
假设您的“创建”视图采用名为“shortened_url”的参数 . 您使用方法1的URL如下所示:
在您处理表单帖子的视图中,您将执行以下操作:
如果是方法2,则根本不需要url模式中的命名参数,而只需反转url模式并添加querystring参数:
如果是方法3,则不需要命名参数或查询字符串值: