2024-10-03 23:23:33 发布
网友
我想使用Django模板标记过滤器(例如(| truncewords_html:my_number))截断我的帖子内容。但带有省略号的href链接,可以将用户重定向到详细的文章完整内容。你知道吗
除了定义一个定制的模板标签过滤器(在类似但相当老的线程中引用)之外,我还想知道是否有一个内置的方法来实现所需的结果。你知道吗
我解决了这个问题。我没有在Django的模板标记过滤器中构建逻辑,而是发送jsonapi数据(使用Django Rest框架构建)供前端使用(在这里我使用JQuery库)。代码如下:
你知道吗序列化程序.py地址:
class PostListSerializer(ModelSerializer): url = post_detail_url username = serializers.SerializerMethodField() date_created = serializers.SerializerMethodField() def get_username(self, obj): return obj.user.username def get_date_created(self, obj): return obj.created.strftime('%b %d %Y | at %I:%M %p') class Meta: model = Post fields = [ 'id', 'username', 'title', 'slug', 'content', 'url', 'date_created', ]
你知道吗视图.py地址:
class PostListAPIView(generics.ListAPIView): queryset = Post.objects.all() serializer_class = serializers.PostListSerializer
最后是我的帖子_列表.html地址:
<script type="text/javascript"> $(document).ready(function(){ $.ajax({ url: '/api/posts/', method: 'GET', success: function(data){ // iterate through the array of objects $.each(data, function(key, value){ var postUser= value.username; var postTitle = value.title; var postSlug = value.slug; var postCreated = value.date_created; var postContent = value.content; var postShort; if (postContent.length >= 50){ // truncate long posts postShort = jQuery.trim(postContent).substring(0, 50).split(" ").slice(0, -1).join(" ") + "<a href='/posts/" + postSlug + "'>" + "..." + "</a>"; } else { postShort = postContent; } $('#posts-container').append( "<div>" + "<h4>" + postUser + ": " + "<a href='/posts/" + postSlug + "'>" + postTitle + "</a>" + "<h5>" + postCreated + "</h5>" + postShort + "</div>" + "<hr>" ); }); }, error: function(data){ console.log('error'); console.log(data); } }); }); </script>
我解决了这个问题。我没有在Django的模板标记过滤器中构建逻辑,而是发送jsonapi数据(使用Django Rest框架构建)供前端使用(在这里我使用JQuery库)。代码如下:
你知道吗序列化程序.py地址:
你知道吗视图.py地址:
最后是我的帖子_列表.html地址:
相关问题 更多 >
编程相关推荐