fix 404 handling in json ld

This commit is contained in:
Tobias Brunner 2025-03-28 11:14:24 +01:00
parent 4f1bbdd147
commit b35ce84792
No known key found for this signature in database

View file

@ -1,6 +1,6 @@
# hub/services/templatetags/json_ld_tags.py
from django import template
from django.urls import resolve
from django.urls import resolve, Resolver404
from django.utils.safestring import mark_safe
import json
@ -13,13 +13,12 @@ def json_ld_structured_data(context):
Generates appropriate JSON-LD structured data based on the current page.
For schemas, see https://schema.org/
"""
request = context["request"]
current_url = request.path
resolved_view = resolve(current_url)
view_name = resolved_view.url_name
request = context.get("request")
if not request:
return ""
# Base URL for building absolute URLs
base_url = request.build_absolute_uri("/").rstrip("/")
current_url = request.path
base_url = f"{request.scheme}://{request.get_host()}"
# Default organization data (for Servala)
organization_data = {
@ -43,6 +42,23 @@ def json_ld_structured_data(context):
},
}
# Add try-except around the view resolution
try:
resolved_view = resolve(current_url)
view_name = resolved_view.url_name
except Resolver404:
# For 404 pages or other unresolvable URLs, return minimal data
return mark_safe(
json.dumps(
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Servala - Open Cloud Native Service Hub",
"url": base_url,
}
)
)
# Handle different page types
if view_name == "homepage":
data = [