from django.http import HttpResponse from django.template import loader from home.models import * def generate_sitemap(request): apps = [ 'home', 'about', 'service', 'product', 'project', 'contact', ] urls = [] for app_name in apps: try: urlconf = __import__(f'{app_name}.urls', fromlist=['urlpatterns']) urlpatterns = getattr(urlconf, 'urlpatterns', []) # Extract URL patterns from the resolver for pattern in urlpatterns: if hasattr(pattern, 'url_patterns'): # If it's an included namespace, extract its URL patterns urls.extend([f'/{url.pattern}' for url in pattern.url_patterns]) else: # Otherwise, add the URL pattern itself urls.append(f'/{pattern.pattern}') except ImportError: pass # URLs for the Service model service_slugs = serviceSection.objects.values_list('slug', flat=True) if service_slugs: for slug in service_slugs: service_url = f'/service/details/{slug}/' urls.append(service_url) # URLs for the Product model product_slugs = productSection.objects.values_list('slug', flat=True) if product_slugs: for slug in product_slugs: product_url = f'/product/details/{slug}/' urls.append(product_url) # URLs for the Project model project_slugs = projectSection.objects.values_list('slug', flat=True) if project_slugs: for slug in project_slugs: project_url = f'/project/details/{slug}/' urls.append(project_url) # Filter out the unwanted URLs with placeholders urls = [url for url in urls if '' not in url and '' not in url and '' not in url and '' not in url and '/contact/' not in url and '/subscribe/' not in url] context = { 'urls': urls, 'request': request, } sitemap_xml = loader.render_to_string('sitemap/sitemap.xml', context) sitemap_xml = sitemap_xml.replace('0.8', '1.0', 1) return HttpResponse(sitemap_xml, content_type="application/xml")