Fix hardcoded localhost:8000 URLs
Some checks failed
continuous-integration/drone/push Build is failing

- Add backend/utils.py for URL management
- Update serializers to use normalize_file_url()
- Update views to use URL utils from env vars
- Fix frontend components to use NEXT_PUBLIC_API_URL
- Add new env vars: DJANGO_BACKEND_URL, DJANGO_MEDIA_BASE_URL
- Replace all hardcoded localhost:8000 with configurable URLs
This commit is contained in:
2025-11-08 19:25:35 +09:00
parent fb74a4a25d
commit e82f0f8e6f
17 changed files with 1396 additions and 58 deletions

View File

@@ -3,6 +3,7 @@ from rest_framework import serializers
from django.contrib.auth import get_user_model
from .models import Link, LinkGroup
from django.conf import settings
from backend.utils import build_media_url, normalize_file_url
from .models import Link, LinkGroup
User = get_user_model()
@@ -39,12 +40,8 @@ class UserSerializer(serializers.ModelSerializer):
request = self.context.get('request')
if request:
absolute_uri = request.build_absolute_uri(obj.avatar.url)
# Заменяем различные варианты внутренних Docker URL
absolute_uri = absolute_uri.replace('http://web:8000', 'http://localhost:8000')
absolute_uri = absolute_uri.replace('http://links-web-1:8000', 'http://localhost:8000')
absolute_uri = absolute_uri.replace('http://backend:8000', 'http://localhost:8000')
return absolute_uri
return f'http://localhost:8000{obj.avatar.url}'
return normalize_file_url(absolute_uri)
return build_media_url(obj.avatar.url)
return None
@@ -71,12 +68,8 @@ class LinkGroupSerializer(serializers.ModelSerializer):
request = self.context.get('request')
if request:
absolute_uri = request.build_absolute_uri(obj.icon.url)
# Заменяем различные варианты внутренних Docker URL
absolute_uri = absolute_uri.replace('http://web:8000', 'http://localhost:8000')
absolute_uri = absolute_uri.replace('http://links-web-1:8000', 'http://localhost:8000')
absolute_uri = absolute_uri.replace('http://backend:8000', 'http://localhost:8000')
return absolute_uri
return f'http://localhost:8000{obj.icon.url}'
return normalize_file_url(absolute_uri)
return build_media_url(obj.icon.url)
return None
def get_background_image_url(self, obj):
@@ -85,12 +78,8 @@ class LinkGroupSerializer(serializers.ModelSerializer):
request = self.context.get('request')
if request:
absolute_uri = request.build_absolute_uri(obj.background_image.url)
# Заменяем различные варианты внутренних Docker URL
absolute_uri = absolute_uri.replace('http://web:8000', 'http://localhost:8000')
absolute_uri = absolute_uri.replace('http://links-web-1:8000', 'http://localhost:8000')
absolute_uri = absolute_uri.replace('http://backend:8000', 'http://localhost:8000')
return absolute_uri
return f'http://localhost:8000{obj.background_image.url}'
return normalize_file_url(absolute_uri)
return build_media_url(obj.background_image.url)
return None
def validate_header_color(self, value):
@@ -126,10 +115,6 @@ class LinkSerializer(serializers.ModelSerializer):
request = self.context.get('request')
if request:
absolute_uri = request.build_absolute_uri(obj.icon.url)
# Заменяем различные варианты внутренних Docker URL
absolute_uri = absolute_uri.replace('http://web:8000', 'http://localhost:8000')
absolute_uri = absolute_uri.replace('http://links-web-1:8000', 'http://localhost:8000')
absolute_uri = absolute_uri.replace('http://backend:8000', 'http://localhost:8000')
return absolute_uri
return f'http://localhost:8000{obj.icon.url}'
return normalize_file_url(absolute_uri)
return build_media_url(obj.icon.url)
return None