daren/test_avatar_display.py

117 lines
3.7 KiB
Python
Raw Normal View History

2025-05-23 19:08:40 +08:00
#!/usr/bin/env python
"""
测试达人头像显示功能
演示如何使用本地图片和外部URL
"""
import os
import django
# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'daren.settings')
django.setup()
from apps.daren_detail.models import CreatorProfile
from django.core.files import File
from django.core.files.uploadedfile import SimpleUploadedFile
def test_avatar_display():
"""测试头像显示功能"""
print("=== 达人头像显示功能测试 ===\n")
# 1. 查询现有达人
creators = CreatorProfile.objects.all()[:3]
print("1. 现有达人头像状态:")
for creator in creators:
avatar_url = creator.get_avatar_url()
has_local = bool(creator.avatar)
has_external = bool(creator.avatar_url)
print(f" - {creator.name}:")
print(f" 本地图片: {'' if has_local else ''}")
print(f" 外部URL: {'' if has_external else ''}")
print(f" 显示URL: {avatar_url or ''}")
print()
# 2. 演示URL访问方式
print("2. 头像URL访问示例")
for creator in creators:
avatar_url = creator.get_avatar_url()
if avatar_url:
if creator.avatar:
print(f" 本地图片: http://localhost:8000{avatar_url}")
else:
print(f" 外部URL: {avatar_url}")
else:
print(f" {creator.name}: 无头像")
print()
# 3. 创建测试数据示例
print("3. 创建测试达人示例:")
# 示例1仅外部URL
creator1, created = CreatorProfile.objects.get_or_create(
name="测试达人A",
defaults={
'avatar_url': 'https://example.com/avatar1.jpg',
'category': 'Beauty & Personal Care',
'followers': 1000
}
)
print(f" - {creator1.name}: {creator1.get_avatar_url()}")
# 示例2仅本地图片如果存在的话
existing_avatar = CreatorProfile.objects.filter(avatar__isnull=False).first()
if existing_avatar:
print(f" - {existing_avatar.name}: {existing_avatar.get_avatar_url()}")
print("\n=== 前端使用示例代码 ===")
print("""
// JavaScript: 获取并显示头像
fetch('/api/daren_detail/creators/')
.then(response => response.json())
.then(data => {
data.results.forEach(creator => {
if (creator.avatar_display_url) {
console.log(`${creator.name}: ${creator.avatar_display_url}`);
// 创建图片元素
const img = document.createElement('img');
img.src = creator.avatar_display_url;
img.alt = `${creator.name}的头像`;
img.className = 'creator-avatar';
// 添加到页面
document.getElementById('creators-list').appendChild(img);
}
});
});
""")
print("\n=== HTML模板使用示例 ===")
print("""
<!-- Django模板中使用 -->
{% for creator in creators %}
<div class="creator-card">
<h3>{{ creator.name }}</h3>
{% if creator.get_avatar_url %}
<img src="{{ creator.get_avatar_url }}"
alt="{{ creator.name }}的头像"
class="avatar">
{% else %}
<div class="no-avatar">暂无头像</div>
{% endif %}
</div>
{% endfor %}
""")
if __name__ == "__main__":
try:
test_avatar_display()
except Exception as e:
print(f"测试出错: {e}")
print("请确保:")
print("1. 已运行 python manage.py migrate")
print("2. 数据库中有达人数据")
print("3. media/avatars/ 目录存在")