我是一名新手,学习使用 Flask 用 Python 开发 Web 应用程序。现在我正在尝试使用 Django 1.9 通过重构同样的应用程序来学习它。
目前,我正试图获取当前 URL 并将其作为参数传递,以便用户可以在下一页操作完成后返回。
在 Flask 中,要返回到先前的 URL,我会使用 'next' 参数和 request.url 来获取更改页面之前的当前 URL。
在模板中,您会找到类似以下的内容:
<a href="{{ url_for('.add_punchcard', id=user.id, next=request.url) }}">Buy punchcard :</a>
并且在视图中:
redirect(request.args.get("next"))
我原以为它和django差不多,但我无法让它工作。我找到了一些建议,但它们是针对旧版本的django(早于1.5),并且已经不再适用(解决方案也相当麻烦!)
目前,我认为我在使用:
return redirect(next)
注意: 在django中使用return redirect似乎是最近出现的,如果我从网上找到的解决方案总是使用return HttpResponse(...,那么最近怎么做事情发生了很多变化。
在模板中我有:
<a href="{% url 'main:buy_punchcard' member.id next={{ request.path }} %}">Buy punchcard</p>
但实际上这会返回一个错误
无法解析剩余部分: '{{' from '{{'
我已经在 settings.py 中添加了 context_processors。
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
)
但这只是一连串错误中的最后一个。总之,我无法使其工作。
因此,有人可以指引我在Django 1.9中如何实现这个功能吗?看起来这是一个相当基础的函数,所以我认为它应该会更容易些。
redirect
在很多年前的 Django 1.1 中就已经被添加了。如果你喜欢,可以继续使用HttpResponseRedirect
,并且轻松地转换为使用redirect
。 - Alasdair