【问题标题】:Django puts new line at end of variable where flask does notDjango在flask没有的变量末尾放置新行
【发布时间】:2015-02-10 23:06:12
【问题描述】:

Righto,所以我一直把头发拉到这个上面。这对我的应用程序来说并不是绝对重要的,但它可以让一切看起来更好。

我正在将我的 Flask 应用程序转换为 Django(以适应我的其他相关 Django Web 应用程序)。

一切都很顺利,我几乎拥有原始应用程序的所有功能(当它使用大部分相同的代码时相当容易)。

发生的事情是我的 Jquery 从 Django / Flask 视图请求一个 ID,并根据该视图的输出返回一个结果。这绝对没问题。

我在 Jquery 文件中写入的“捕获”不起作用(例如,如果输入了无效的 ID)。

烧瓶返回

No service assigned to that ID|

如我所愿,当 Django 返回时

No service assigned to that ID
|

(注意:没有管道“|”,实际上是返回,只是为了显示返回值后光标在哪里)

这似乎是一个很小的差异,但它目前正在破坏我的代码,我看不到另一种修复它的方法。

正如你所看到的,Django 用额外的一行输出值。 这是我正在使用的代码示例(两者几乎相同)

python:(Flask 和 Django)

error = "No service assigned to that ID"

JQuery

(AJAX stuff above here. returned value is 'reply')

if((reply) == 'No service assigned to that ID') {
  $('#spinner').empty().append("No service assigned to that ID");
}
else {....}

【问题讨论】:

  • 如何在 Django 中返回值? HttpResponse 或通过模板?
  • return HttpResponse(template.render(contextelements))
  • 你能发布你的模板代码吗?
  • template 是我制作的lookup.html 文件。与 Flask 相同,因为标签相同。 contextelements 是正在传递的变量列表。将发布模板代码

标签: jquery python django flask


【解决方案1】:

您可以在 Python 中使用 string.strip() 或在 Javascript 中使用 string.trim() 来删除任何前导和尾随空格,包括换行符。

# Will remove leading/trailing whitespace from any response
return HttpResponse(template.render(contextelements).strip())

// Will compare with the trimmed result (tough `reply` is not changed)
if(reply.trim() == 'No service assigned to that ID') {

您应该使用哪一个取决于您是要从所有响应中删除空格还是仅在此比较中删除空格。

【讨论】:

  • 太棒了。我喜欢你的方式胜过我的方式。感觉更绝对。干杯
【解决方案2】:

我决定只使用它。

将“==”更改为“.contains”,因此不必绝对匹配,只需包含相同的文本即可。

if((reply).contains('No service assigned to that ID')) {
  $('#spinner').empty().append("No service assigned to that ID");
}
else {....}

【讨论】:

  • 仅供参考。这个解决方案似乎只适用于 Firefox。 Chrome 和 IE 真的不喜欢它。
猜你喜欢
  • 2022-11-16
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
相关资源
最近更新 更多