【问题标题】:How to change HTML of models (classes) in Django?如何在 Django 中更改模型(类)的 HTML?
【发布时间】:2015-05-03 22:08:05
【问题描述】:

假设我在myproject/myapp/models.py 中有一个TrueFalseQuestion 模型(它只有一个question_text),并且我希望它呈现为,比方说

<a>Question Text</a>
<input type="radio">True</input>
<input type="radio">False</input>

(HTML 可能是错误的,不重要) ,在这个模板中,只有Question Text 部分改变,输入形式总是不变的。那么如何在 Django 中实现这种行为呢?

一个例子将不胜感激。谢谢!

【问题讨论】:

    标签: python html django django-models django-templates


    【解决方案1】:

    在应用程序的views.py 文件中,添加以下内容。

    from django.views.generic import ListView
    from models import TrueFalseQuestion
    
    class QuestionsList(ListView):
        queryset = TrueFalseQuestion.objects.all()
        template_name = 'name_of_your_template'
    

    然后在您的模板中,像这样遍历 object_list:

    {%for ques in object_list%}
    <a>{{ques.question_text}}</a>
    <input type="radio">True</input>
    <input type="radio">False</input>
    {%endfor%}
    

    另外,请确保将您的网址指向视图。

    【讨论】:

    • 谢谢!如果我的视图包含多个内容类型,例如 TrueFalseQuestion 和 MultipleChoiceQuestion,该怎么办?
    • 您需要像这样覆盖 get_context_data 方法:def get_context_data(self,**kwargs): context = super(QuestionsList,self).get_context_data(**kwargs) context['multiple_object_list'] = MultipleChoiceQuestion.objects.all() return context 然后您可以像上面一样遍历multiple_objects_list 以获取此查询集中的数据。抱歉,缩进在 cmets 中搞砸了。
    • 我实际上是在尝试编辑现有项目,现在我看到模板 html 文件只有这个:&lt;span class="current"&gt; block {{ blockPairs.number }} of {{ blockPairs.paginator.num_pages }}. &lt;/span&gt;,其中 block 是问题的容器类。那么如何/在哪里可以更改此块的行为?
    • 这是分页器对象。您要在其中编辑什么?如果你想使用 ListView 的原始分页,请将你的代码替换为&lt;span class="current"&gt; block {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}. &lt;/span&gt;
    • 我明白了。所以这与问答内容无关。我以某种方式在其他地方找到了相关的模板页面。我想我需要练习一下 Django 的模板语言。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 2021-03-14
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 2020-01-14
    • 2011-09-09
    相关资源
    最近更新 更多