社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

用变量和数据库数据填充Django模板?

JustBlossom • 5 年前 • 1806 次点击  

我使用Django创建一个包含不同类型单词/术语的应用程序。在一个页面上,您可能有标题“条款”,然后是条款列表。在另一个页面上,除了短语(标题,短语列表)之外,您有完全相同的东西。

有可能做这样的事情吗-->

  1. 存储条件的标题和列表
  2. 存储短语的标题和列表
  3. 创建 用于在
  4. 生成术语页的模板
  5. 使用同一模板生成页面的函数 短语

希望我可以避免一个大的模板文件夹,里面的页面基本上都在做同样的事情。例如,现在,如果要添加西班牙语短语和法语短语,则必须添加两个基本上执行相同操作的新模板-->显示标题和列表。我只想把标题和列表存储在某个地方,让Django做剩下的工作来创建页面。因此,技术上我可以有1000页,而不必编写1000个不同的模板文件,这些文件都只是显示标题和列表。

{% extends "profile/base.html" %}

{% block content %}

    <div class="row">
        <div class="col-sm-6">
            <a href="{% url 'profile:new_term' %}">Add a New Term</a>
            <p>Terms:</p>
            <ul>
                {% for term in terms %}
                    <li><p><a href="{% url 'profile:term' term.id %}">{{ term.name }}</a> : {{ term.definition }}</p></li>
                    <a href="{% url 'profile:edit_term' term.id %}">Edit Term</a>
                    <a href="{% url 'profile:delete_term' term.id %}">Delete Term</a>
                {% empty %}
                    <li>No terms have been added yet.</li>
                {% endfor %}
            </ul>
        </div>
    </div>
{% endblock content %}
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54942
 
1806 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Ralf
Reply   •   1 楼
Ralf    6 年前

也许有可能有一个称为 Concept (这可以是术语、短语、标题或类似的东西)使用类似的相关模型 ConceptDetail (可以是一系列术语或短语等)。

然后,您有一个URL配置,但是不同的概念有不同的pk,这些pk出现在URL中以区分它们(您还可以将URL中的slug用作kwargs以使URL更具可读性)。例如:

path('concept/', ConceptListView.as_view()),
path('concept/<slug:concept_name>/', ConceptDetailView.as_view()),

对于视图和模板,您有一个 ListView 它向您展示了所有概念(在这里您可以添加筛选和其他搜索选项),然后在 DetailView

这听起来像是能帮到你的吗?

Henrique Andrade
Reply   •   2 楼
Henrique Andrade    6 年前

不必为每个页面创建html模板。

你必须在 urls.py :

url(r'^(P<list_name>\w+)/$', views.your_view)

因此,与其有许多具有相同结构的模板,不如只呈现一个具有所需信息的模板。

所以你的观点应该是这样的:

def your_view(request, list_name):
    list = get_object_or_404(List, pk=list_name)
    context = {
        'list_info':list.info
    }
   return render(request, 'your_app/template.html', context)

当然,在这个例子中,需要有一个名为 List 在数据库中使用主键 list_name