【问题标题】:Changing how returned output is displayed in Django更改返回的输出在 Django 中的显示方式
【发布时间】:2011-11-07 22:11:48
【问题描述】:

我最近开始整体学习 Python/Django,为了加快我的学习曲线,同时做一些有建设性的事情,我开始了我自己的个人项目。

我已经安装了最新的 Django/Python/Jinja2 和 Python Battle.net API egg。 目前我正在查询一个“字符”并且我正在尝试更改返回值的输出,这是我认为的函数:

def viewCharacter(request, name):
    character = get_object_or_404(Member, name=name)
    info = Character('EU', 'Auchindoun', name, fields=[Character.GUILD])

    ctx = { 'character': character, 'info': info, 'guildname': 'Guild Name' }
    return render_to_response("roster/viewCharacter.html", ctx, request)

现在,在我的模板中,我尝试将 info.class_(它返回一个数值)从它的数值“转换”为字符串(类名),但我总是收到有关 info.class_ 的错误消息无法在 if/for 语句/循环或其他错误中使用。 (尝试将其与二元组进行比较)

我真的找不到在网上做这件事的方法,所以我来到了一个在我的学习过程中对我帮助最大的地方。

任何帮助将不胜感激! - 聂鲁

【问题讨论】:

  • 你能把你的模板代码贴在这里吗?你如何“翻译”_class
  • 这主要是通过反复试验。我已经没有模板代码了,因为我已经开始尝试从头开始!

标签: python django jinja2


【解决方案1】:

如果您确实需要在模板中使用类名,请尝试使用this 模板过滤器,或者只是在视图中获取它并在上下文中传递:)

【讨论】:

    【解决方案2】:

    有什么原因你不能像这样在上下文中添加另一个变量:

    ctx = { 'character': character, 'info': info, 'class': repr(info.class_), 'guildname': 'Guild Name' }

    编辑:根据您提供的其他信息,这是我的新建议。

    变化:

    ctx = { 'name': name, 'character': character, 'info': info, 'class': repr(info.class_), 'guildname': 'Team-Potato' }
    

    到:

    ctx = { 'name': name, 'character': character, 'info': info, 'className': classnameDict[info.class_], 'guildname': 'Team-Potato' }
    

    这只是让类在视图中查找。现在使用

    将其添加到您的模板中

    {{ 类名 }}

    【讨论】:

    • 一点也不!我愿意接受所有建议。
    • 对。看看我的观点 def viewCharacter(request, name): character = get_object_or_404(Member, name=name) info = Character('EU', 'Auchindoun', name, fields=[Character.GUILD]) classnameDict = { 1 : '战士',2: '圣骑士',3: '猎人',4: '盗贼',5: '牧师',6: '死亡骑士',7: '萨满',8: '法师',9: '术士',10: '未知',11: '德鲁伊', } ctx = { 'name': 名称, 'character': 字符, 'info': info, 'class': repr(info.class_), ' guildname': 'Team-Potato' } return render_to_response("roster/viewCharacter.html", ctx, request) 我将如何从新字典中翻译 info.class?
    • 模板中不需要翻译(repr 所做的),只需使用模板中的新变量将其输出:{{ class }}
    • {{ class }} 不幸地返回与 info.class_ 完全相同的结果。角色职业的 ID,而不是翻译后的名字!
    • 让我试着重新解释一下。 info.class_ 返回角色职业的 ID(来自《魔兽世界》),没有任何职业名称的转换。我想要实现的是一种将 ID 指向实际类名而不是 ID 的方法。比如说 info.class_ 返回“5”,例如,我想把它翻译成“牧师”。我创建了一个包含信息的元组列表并将其传递给上下文。我只是无法翻译。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2011-04-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    相关资源
    最近更新 更多