如何正确地使用{%include%}标签在django中渲染模板(如局部视图)?

克里斯

我在左侧显示了我的子类别的链接列表。我想发生的是,当用户单击子类别时,它将在右侧显示数据/内容。

我使用的是基于类的视图,因此我的初始页面是一个ListView(subcategory_list.html),其中显示了所有Subcategory对象。

因此,每个Subcategory对象都有一个DetailView(subcategory_detail.html)。

我想基于单击了“子类别”链接来显示DetailView模板(在同一页面上)。

如果我理解正确,则必须使用{%include%}标签和一些AJAX ???

如何停止浏览器访问新URL?

谢谢!

views.py

class SubcategoryListView(ListView):
model = Subcategory
template_name = 'categories/subcategory_list.html'

class SubcategoryDetailView(DetailView):
model = Subcategory
template_name = 'categories/subcategory_detail.html'

def get_context_data(self, **kwargs):
    context = super(SubcategoryDetailView, self).get_context_data(**kwargs)
    context['tasks'] = Task.objects.filter(subcategory=self.object)
    context['contractors'] = ContractorProfile.objects.filter(subcategory=self.object)
    return context

subcategory_list.html

{% extends 'base.html' %}

{% block content %}
<div class="container">
    <div class="col-md-3">
        {% for subcategory in object_list %}
            <p><a href="{% url 'categories:subcategory' subcategory.id %}">{{ subcategory.title }}</a></p>

        {% endfor %}
    </div>
    <div class="col-md-9">
        {% include 'categories/subcategory_detail.html' %}
    </div>
</div>

{% endblock %}

subcategory_detail.html

{% extends 'base.html' %}

{% block content %}
<div class="container">
    <h3>Subcategory: {{ object.title }}</h3>

    {% if user.is_authenticated%}
        <div class="row">
            {% for task in tasks %}
            <div class="thumbnail col-md-3">
                <img src="#" class="img-circle" />
                <div class="caption">
                    <p>Title: {{ task.title }}</p>
                    <p>Description: {{ task.description }}</p>
                    <p>Special Instructions: {{ task.special_instructions }}</p>
                    <p>Posted by: {{ task.user.username }}</p>
                </div>
            </div>
            {% cycle '' '' '' '</div><div class="row">' %}
            {% endfor %}

    {% endif %}
    </div>

</div>
<div class="container">
    <h3>Contractors Available:</h3>
    <div class="row">
        {% for contractor in contractors %}
        <div class="thumbnail col-md-3">
            <img src="#" class="img-circle" />
            <div class="caption">
                <p>Name: {{ contractor.contractor.username }}</p>
                <p>Rating: {{ contractor.rating }}</p>
                {% if contractor.contractor.is_online == True %}
                    <span class="glyphicon glyphicon-fire"></span> <span>Online Now</span>
                {% endif %}
            </div>
        </div>
        {% cycle '' '' '' '</div><div class="row">' %}
        {% endfor %}
</div>



{% endblock %}

urls.py

urlpatterns = [
    url(r'^subcategories/$', views.SubcategoryListView.as_view(), name='subcategories'),
    url(r'^subcategories/(?P<pk>\d+)/$', views.SubcategoryDetailView.as_view(), name='subcategory'),
]
土星

并非通过刷新页面来完成的所有工作都需要使用服务器内容,而是需要使用JavaScript。在这种情况下,您想将HTML内容(由Django提供)注入您的页面。

我要在这里使用jQuery。

首先,您要标识需要在其中注入内容的div(为了使JavaScript能够引用它)和div。

另外,删除{% include %}标签(或让标签呈现用户加载页面时要呈现的内容)。

(在subcategory_list.html(应重命名subcategory.html)中):

<div class="container subcategory_list">
    <div class="col-md-3">
        {% for subcategory in object_list %}
            <p><a href="{% url 'categories:subcategory' subcategory.id %}">{{ subcategory.title }}</a></p>

        {% endfor %}
    </div>
    <div class="col-md-9" id="subcategory_detail">
        {% include 'categories/subcategory_detail.html' %}
    </div>
</div>

然后,您需要告知a href,不要加载页面,而是让ajax调用发生。

<script type="text/javascript">
    $(function() { // shortcut for onDocumentReady

        // When you click an "a" tag who is child of an item with class "subcategory_list"…
        $('.subcategory_list>a').click(function() {

            var href = $(this).attr('href');

            // Use this if you want to add a loading gif or something similar
            // $('#subcategory_detail').html(my_cool_loading_gif_html)

            $.get(href, {
                success: function(response) {
                    // If the ajax call is successful, take the response and inject in div with id "subcategory_detail"
                    $('#subcategory_detail').html(response)
                },
                error: function(response) {
                    // Handle ajax errors here
                }
            })
            return false;
        });

    });
</script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何正确地使视图的宽度相对

来自分类Dev

正确地使用两个视图的正确方法

来自分类Dev

如何使用行模板正确地对kendo ui进行分组?

来自分类Dev

如何仅使用C ++中的迭代器正确地迭代3D向量?

来自分类Dev

如何使用表面的Alpha值正确地使图像在pygame中褪色

来自分类Dev

如何使用ReactJS将图像正确地适合HTML和CSS中的div

来自分类Dev

如何通过javascript通过django include标签在侧边栏中激活元素?

来自分类Dev

如何正确地从JSF中的URL获取参数?

来自分类Dev

如何正确地从大型过程输出中读取

来自分类Dev

如何正确地部分刷新Xpages中的多个项目

来自分类Dev

如何正确地从服务中模拟用户?

来自分类Dev

如何正确地在JDBC URL中传递会话变量?

来自分类Dev

如何正确地进行依赖注入(在Spring中)?

来自分类Dev

如何正确地从承诺中抛出错误

来自分类Dev

如何正确地从R中的pdf接收文本?

来自分类Dev

如何正确地从JSF中的URL获取参数?

来自分类Dev

如何正确地从大型过程输出中读取

来自分类Dev

如何正确地将染料设置到ItemStack中?

来自分类Dev

如何正确地从角度服务中返回承诺?

来自分类Dev

如何正确地阅读R中的因子水平?

来自分类Dev

我如何正确地从列表中投射此对象?

来自分类Dev

如何正确地部分刷新Xpages中的多个项目

来自分类Dev

如何正确地子类化JavaScript中的子类?

来自分类Dev

如何正确地在Fortran中完成对象?

来自分类Dev

如何正确地将 blob 数据插入表中

来自分类Dev

如何正确地将 JavaScript 合并到 html 中?

来自分类Dev

如何正确地使用移动标签创建动画并在进行过程中禁用任何UI干扰

来自分类Dev

如何正确使用include()?

来自分类Dev

当列标题中有空格时,如何正确地在Shiny中渲染DataTable

Related 相关文章

  1. 1

    如何正确地使视图的宽度相对

  2. 2

    正确地使用两个视图的正确方法

  3. 3

    如何使用行模板正确地对kendo ui进行分组?

  4. 4

    如何仅使用C ++中的迭代器正确地迭代3D向量?

  5. 5

    如何使用表面的Alpha值正确地使图像在pygame中褪色

  6. 6

    如何使用ReactJS将图像正确地适合HTML和CSS中的div

  7. 7

    如何通过javascript通过django include标签在侧边栏中激活元素?

  8. 8

    如何正确地从JSF中的URL获取参数?

  9. 9

    如何正确地从大型过程输出中读取

  10. 10

    如何正确地部分刷新Xpages中的多个项目

  11. 11

    如何正确地从服务中模拟用户?

  12. 12

    如何正确地在JDBC URL中传递会话变量?

  13. 13

    如何正确地进行依赖注入(在Spring中)?

  14. 14

    如何正确地从承诺中抛出错误

  15. 15

    如何正确地从R中的pdf接收文本?

  16. 16

    如何正确地从JSF中的URL获取参数?

  17. 17

    如何正确地从大型过程输出中读取

  18. 18

    如何正确地将染料设置到ItemStack中?

  19. 19

    如何正确地从角度服务中返回承诺?

  20. 20

    如何正确地阅读R中的因子水平?

  21. 21

    我如何正确地从列表中投射此对象?

  22. 22

    如何正确地部分刷新Xpages中的多个项目

  23. 23

    如何正确地子类化JavaScript中的子类?

  24. 24

    如何正确地在Fortran中完成对象?

  25. 25

    如何正确地将 blob 数据插入表中

  26. 26

    如何正确地将 JavaScript 合并到 html 中?

  27. 27

    如何正确地使用移动标签创建动画并在进行过程中禁用任何UI干扰

  28. 28

    如何正确使用include()?

  29. 29

    当列标题中有空格时,如何正确地在Shiny中渲染DataTable

热门标签

归档