在 Django 模板中显示查询字符串值

新手上路,请多包涵

我想在查询字符串的帮助下将 get 方法中的一些成功消息打印回索引页 (home.html),即模板页。我已使用重定向到索引页

return HttpResponseRedirect("/mysite/q="+successfailure)

现在我想打印字符串成功以及索引文件(或模板文件/home.html 文件)中的其他内容。

我搜索了解决方案,发现“ django.core.context_processors.request context ”应该添加到设置中。但是我没有找到添加它的地方。我目前正在使用 python 2.7 和 django 1.4.3。

我也尝试使用

render_to_response("home.html",{'q':successfailure})

但是,结果打印在当前页面(addContent.html- 我不想要),但我想将 url 发送到 ‘/mysite/’ 并在那里打印结果。

请提出适当的解决方案。提前致谢。

原文由 user2081099 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 577
2 个回答

这些是默认的上下文处理器: https ://docs.djangoproject.com/en/dev/ref/templates/api/#using-requestcontext

 TEMPLATES = [ {"OPTIONS": { "context_processors": [
    'django.template.context_processors.debug',
    'django.template.context_processors.request',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
]}}]

如果它不在您的设置中,那么您还没有覆盖它。现在就做。

然后在你的模板中,是这样的:

 {% if request.GET.q %}<div>{{ request.GET.q }}</div>{% endif %}

另外,我在您的链接 URL 中注意到您没有使用查询字符串运算符 ? 。你应该:

 return HttpResponseRedirect("/mysite/?q="+successfailure)

原文由 Francis Yaconiello 发布,翻译遵循 CC BY-SA 4.0 许可协议

我不确定我是否理解这个问题,但您可以使用 request.GET 访问您视图中的查询字符串。

因此,您可以通过将 successfailure 变量添加到上下文中来调整呈现 home.html 的视图。就像是 -

 def home_view(request):
    #....
    successfailure = request.GET
    return render(request, 'home.html', {'succsessfailure': successfailure.iteritems()})

然后遍历模板中的变量

{% for key, value in successfailure %}
    <p>{{ key }} {{ value }}</p>
{% endfor %}

如果查询字符串中有一个特定的键,您可以使用 request.GET['your_key'] 获取值,然后放弃对 iteritems() 的调用(以及模板中的迭代)。

原文由 Aidan Ewen 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题