Django_Basic_Manufacturing_3/venv/Lib/site-packages/django_bootstrap5/utils.py
2025-08-22 17:05:22 +07:00

53 lines
1.5 KiB
Python

from urllib.parse import parse_qs, urlparse, urlunparse
from django.template.loader import get_template
from django.utils.encoding import force_str
from django.utils.http import urlencode
from django.utils.safestring import mark_safe
def render_template_file(template, context=None):
"""Return rendered template file, with given context as input."""
template = get_template(template)
return template.render(context)
def url_replace_param(url, name, value):
"""Replace a GET parameter in a URL."""
url_components = urlparse(force_str(url))
params = parse_qs(url_components.query)
if value is None:
del params[name]
else:
params[name] = value
return mark_safe(
urlunparse(
[
url_components.scheme,
url_components.netloc,
url_components.path,
url_components.params,
urlencode(params, doseq=True),
url_components.fragment,
]
)
)
def get_url_attrs(url, attr_name):
"""
Return dictionary with attributes for HTML tag, updated with key `attr_name` with value `url`.
Parameter `url` is either a string or a dict of attrs with the key `url`.
Parameter `attr_key` is the name for the url value in the results.
"""
url_attrs = {}
if isinstance(url, str):
url = {"url": url}
url_attrs.update(url)
url_attrs[attr_name] = url_attrs.pop("url")
return url_attrs