gpt4 book ai didi

javascript - Django 。通过js渲染模型参数

转载 作者:行者123 更新时间:2023-12-03 08:02:49 24 4
gpt4 key购买 nike

我创建了简单的应用程序。该应用程序的主页按一个模型显示所有对象,当我单击对象时,js脚本会渲染<div>中的对象参数。我对此解决方案使用了一些丑陋的逻辑:在模型方法中添加带有 html 标签的所有参数

class SimpleObject(models.Model):
param1 = models.CharField(max_length=200)
param2 = models.CharField(max_length=200)

def object_info(self):
param1 = '<p>' + self.param1 + '</p>'
param2 = '<p>' + self.param2 + '</p>'
return param1 + param2

通过ListView发送:

class SimpleObjectList(ListView):
model = SimpleObject

并像这样渲染(使用 Bootstrap ):

<div class="col-md-4">
{% for object in object_list %}
<ul class="nav nav-pills nav-stacked">
<li class="object_item" name="{{object.object_info}}">
<a href="#">{{object.param1}}</a></li>
</li>
</ul>
{% endfor %}
</div>
<div class="col-md-8 object_info">
</div>


$('.object_item').click(function(){
var simple_object = this;
$('.object_info').empty();
$('.object_info').append($(simple_object).attr('name'));
});

看起来我想要,但我绝对确定,有更好的解决方案来解决这个问题。你能帮助我一些使用 js 处理模型字段的最佳实践

*它看起来如何: enter image description here

最佳答案

你应该使用.load()仅加载 DOM 的一部分,该部分应用于显示从服务器新获取的数据。

这个想法是:

<div>
{% for object in object_list %}
<a class="obj_cls" data-object_id="{{ object.id }}"></a>
{% endfor %}
</div>
<div class="snippet_wrapper">
{% include "html_snippet_only_for_this_part.html" %}
</div>

<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
$(function(){
$('.obj_cls').on('click', function () {
var object_id = $(this).data('object_id');
$('.snippet_wrapper').html('').load("/"+object_id, function () {
});
});
});
</script>

并且带有 url /PK/ 的 View (其中 object_id 是单击对象的 ID)应该执行以下操作:

def PartyDetailView(DetailView):
model = YourModel
template_name = "html_snippet_only_for_this_part.html"

并且html_snippet_only_for_this_part.html的内容只是:

<div>
{{ object.name }} etc etc...
</div>

希望,这有帮助! :)

关于javascript - Django 。通过js渲染模型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34518590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com