daren/test_avatar_display.py
2025-05-23 19:08:40 +08:00

117 lines
3.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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/ 目录存在")