有没有办法在我的基于 django 的应用程序上打印字典键和相应的值列表?

Posted

技术标签:

【中文标题】有没有办法在我的基于 django 的应用程序上打印字典键和相应的值列表?【英文标题】:Is there a way to print dictionary keys and respective list of values on my django based app? 【发布时间】:2019-06-24 21:34:05 【问题描述】:

任何人都可以回答这个问题, 这是我的 maketest.html 我正在尝试打印带有键和相应值列表的字典, django 中是否有可以执行此类操作的模块或后端或函数?

在python中有解决这个问题的方法吗?

% extends 'TakeTestApp/base.html' %
% block content %
    <h3 class="display-6"> TestName </h3>
    <article class="media content-section">
        <div class="media-body">
            <div class="article-metadata">
                <p class="display-6">
                    % for q in quesBank %
                         q  
                         quesBank[q] 
                    % endfor %

                </p>

            </div>
        </div>
    </article>
% endblock content%

这是我的 ques.txt,

Q: What is your name?
opt1:Vineeth*
opt2:Vineth
opt3:Vinith
opt4:Vinth

Q: Where are u from?
opt1:Hyderabad
opt2:Secunderabad*
opt3:Rajasthan
opt4:vizag

Q: What is the capital of india?
opt1:* Delhi
opt2: Telangana
opt3: Madhya Pradesh
opt4: Gujrat

Q: What is 2+1?
opt1: 0
opt2: 1
opt3:* 3
opt4: 6
Q: Python is a _____ language
opt1: Markup
opt2: not
opt3:* programming
opt4: English

我的views.py是

from django.shortcuts import render, redirect
from Test.forms import TestForm

# Create your views here.


def MakeTest(request):
    file1 = open('ques.txt', 'r')
    lines = file1.readlines()
    file1.close()
    ques = []
    options = []
    ans = []
    for line in lines:
        if "Q:" in line:
            ques.append(line)
        if "opt" in line:
            options.append(line.replace('*', ''))
        if "*" in line:
            ans.append(line)
    i = 0
    quesBank = 
    for qu in ques:
        quesBank[qu] = [options[x] for x in range(i, i + 4)]
        i = i + 4
    return render(request, 'TestMaking/maketest.html', 'TestName': 'Test Make App', 'ques': ques, 'options': options, 'quesBank': quesBank)

这是我尝试过的,但无法获得所需的输出

我希望输出为,

Q: What is your name?
opt1:Vineeth
opt2:Vineth
opt3:Vinith
opt4:Vinth

Q: Where are u from?
opt1:Hyderabad
opt2:Secunderabad
opt3:Rajasthan
opt4:vizag

Q: What is the capital of india?
opt1: Delhi
opt2: Telangana
opt3: Madhya Pradesh
opt4: Gujrat

Q: What is 2+1?
opt1: 0
opt2: 1
opt3: 3
opt4: 6
Q: Python is a _____ language
opt1: Markup
opt2: not
opt3: programming
opt4: English

上面应该显示在我的testmake.html上

【问题讨论】:

你得到了什么而不是预期的输出? 【参考方案1】:

The solution is documented,您不需要任何特殊模块或其他任何东西:

<ul>
% for q, opts in in quesBank.items %
    <li>
        Q :  q  
        <ol> 
        % for opt in opts %
          <li>opt</li>        
        % endfor %
        </ol>
    </li>
   % endfor % 
</ul>

【讨论】:

我们可以为选项使用输入单选类型而不是 吗?无论如何,谢谢,它按预期工作 你做你想做的 wrt/ 标记 - 但如果你要构建一个表单,请自己(以及任何必须维护此代码的人)帮个忙:使用 django 表单。 FWIW,您当然也应该使用正确的模型,而不是使用自定义格式的文本文件和直接在视图中编码的半损坏解析器。 是的,我打算改变它并改用 django 表单。我对我正在从事的项目还有其他疑问...请在我的 github 存储库github.com/vineethn7/taketestprojectCombined/tree/master/… 上查看 在上述存储库中,检查测试制作应用程序和视图,我想以读取模式打开已从测试应用程序上传到同一项目的媒体文件夹中的文件。有没有办法以读取模式打开刚刚上传的文件 @vineethramkumar 如果您还有其他问题,请将它们作为新的、不同的问题发布。

以上是关于有没有办法在我的基于 django 的应用程序上打印字典键和相应的值列表?的主要内容,如果未能解决你的问题,请参考以下文章

仅定义权限的 Django 模型中断测试

获取 django 应用的绝对路径

Django 模板:有没有办法根据其属性查询特定对象(而不是遍历所有对象)?

基于比较日期的Django查询集[重复]

Django-CMS - 全球占位符?

在我的程序中,如果语句在 django 中没有返回任何对象 else 语句正在执行