【问题标题】:Decode unicode to string in django template在 django 模板中将 unicode 解码为字符串
【发布时间】:2014-10-13 17:04:31
【问题描述】:

我正在尝试遍历数据库并在 django 模板中输出结果。我得到了所有的工作,但它在 html 中输出每个项目如下:

[u'AMD',u'A10-7700K,3.4 GHz(3.8 GHz Turbo Boost)FM2+ 处理器']

[u'\n 3.400 MHz\xa0\n ', u'\n 4 核\xa0\n ', u'\n FM2+\xa0\n ']

为了记录。我希望它作为没有 unicode 的普通字符串输出。我尝试了很多东西,但似乎都不起作用。我会写下我尝试过的所有事情,但老实说,我什至无法记录所有这些。

我得到了以下django文件,我只会写下相关的部分:

views.py:

def processoren(request):

    processoren = Processoren.objects(categorie__contains='Processor')[:10]
    #processoren = json.dumps(list(processoren)
    return render_to_response('processoren.html', {'Processoren': processoren},
                          context_instance=RequestContext(request))

models.py:

from django.db import models

from mongoengine import *
from APc.settings import DBNAME

connect(DBNAME)

    class Processoren(Document):
    categorie = StringField(max_length=120)
    naam = StringField(max_length=500)
    subnaam = StringField(max_length=500)
    info = StringField(max_length=500)
    stock = StringField(max_length=500)
    enter code hereprijs = StringField(max_length=120)

processoren.html:

{% extends "base.html" %}
{% load static %}
{% block content %}
<div class="container">
    <div class="col-md-4 col-lg-2">



    </div>

    <div class="col-md-8 col-lg-10">

    <div class=" top-margin">
        
        <h1>Processoren</h1>
        {% for processor in Processoren %}
        <div class="list-group">
            <div class="list-group-item">                    
                <div class="row-picture">
                    <img class="square" src="http://lorempixel.com/56/56/people/1"    alt="icon">
                </div>

                <div class="row-content">
                    <h4 class="list-group-item-heading">{{ processor.naam }}</h4>
                    <p class="list-group-item-text">{{ processor.info }}</p>
                    <p class="list-group-item-text pull-right">{{ processor.prijs }}</p>
                    <p class="list-group-item-text pull-right">{{ processor.stock }}</p>
                </div>

            </div>



        </div>
        {% endfor %}

    </div>


</div>
</div>
{% endblock %}

例如,我试图简单地将 str() 放在 processor.naam 之后,但这也不起作用。起作用的是在 processor.naam 之后添加 0 但我当然只能得到第一个索引,即“AMD”。任何帮助将不胜感激。

【问题讨论】:

  • 你确定这行:processoren = Processoren.objects(categorie__contains='Processor')[:10] 不是processoren = Processoren.objects.filter(categorie__contains='Processor')[:10] 吗?
  • 好吧,我不确定 .filter() 做了什么,但遗憾的是它给出了相同的结果。
  • 你使用的是 Django 的非 rel 分支吗?还是?
  • 不,至少据我所知不是。我使用 mongoengine 连接到 mongodb。
  • 我对使用那个引擎不是很熟悉。我可以向您展示一种将 unicode 值转换为字符串的方法,但我不确定这是解决问题根源的最佳方法。

标签: python django mongodb unicode scrapy


【解决方案1】:

这与 Unicode 无关。您有一个项目列表,您需要遍历它们。

{% for name in processor.naam %}{{ name }}{% endfor %}

【讨论】:

  • 是的,我一直在想,但我不知道如何在 django 模板中迭代它们。例如,我尝试了 processor.naam.0:5 但这不起作用。我也找不到任何相关文件。顺便说一句,感谢您的帮助!
  • 我已经发布了一个例子。
【解决方案2】:

对于 Django 不熟悉 MongoEngine,将您的 unicode 值转换为字符串相当简单,这有望暂时帮助您解决问题的根源。

objects = Processoren.objects.filter(categorie__contains='Processor')[:10]
processoren = [str(p.naam) for p in objects]

同样,我不知道使用该引擎的查询集上有哪些方法可用,因此在这种情况下我避免使用values_list。也不确定您需要输出哪个属性,所以我只使用了naam

【讨论】:

  • 这至少给了我一点动力。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-09
  • 2016-02-25
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多