507 Commits

Author SHA1 Message Date
Marc Gibbons
922c4cf972 Fixed #36783 -- Ensured proper handling of multi-value QueryDicts in querystring template tag.
Co-authored-by: Jacob Walls <jacobtylerwalls@gmail.com>
Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
2025-12-15 18:58:41 -03:00
Jake Howard
0ac548635e Fixed #36728 -- Validated template tag arguments at definition time.
Before, `context` and `content` were validated at compile time.
2025-12-05 10:06:48 -05:00
Jacob Walls
34186e731c Fixed #36712 -- Evaluated type annotations lazily in template tag registration.
Ideally, this will be reverted when an upstream solution is available for
https://github.com/python/cpython/issues/141560.

Thanks Patrick Rauscher for the report and Augusto Pontes for the
first iteration and test.
2025-12-01 20:48:54 -05:00
Jacob Walls
e94b19f6ab Refs #35535 -- Used intended decorator in test_simple_block_tag_parens(). 2025-12-01 08:38:27 -05:00
Jacob Walls
3f15935420 Refs #36705 -- Added coverage for multiple types of enclosing punctuation in urlize().
This case was inadvertently fixed in ad94446fcc.
2025-11-21 12:11:38 -05:00
farhan
34bd3ed944 Refs #36559, #35667 -- Used skip_file_prefixes in PartialTemplate.source warning. 2025-09-04 12:14:10 -04:00
farhan
d82f25d3f0 Fixed #36559 -- Respected verbatim and comment blocks in PartialTemplate.source. 2025-09-03 10:59:58 -04:00
farhan
3485599ef0 Refs #36559 -- Ran template partial source tests in debug mode only.
Added a warning for accessing PartialTemplate.source when debugging is disabled.
Thanks Sarah Boyce for the idea.
2025-09-03 10:59:58 -04:00
SaJH
a9fe98d5bd Fixed #35533 -- Prevented urlize creating broken links given a markdown link input.
Signed-off-by: SaJH <wogur981208@gmail.com>
2025-08-28 08:54:56 +02:00
farhan
5e06b97095 Fixed #36410 -- Added support for Template Partials to the Django Template Language.
Introduced `{% partialdef %}` and `{% partial %}` template tags to
define and render reusable named fragments within a template file.
Partials can also be accessed using the `template_name#partial_name`
syntax via `get_template()`, `render()`, `{% include %}`, and other
template-loading tools.

Adjusted `get_template()` behavior to support partial resolution, with
appropriate error handling for invalid names and edge cases. Introduced
`PartialTemplate` to encapsulate partial rendering behavior.

Includes tests and internal refactors to support partial context
binding, exception reporting, and tag validation.

Co-authored-by: Carlton Gibson <carlton@noumenal.es>
Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
Co-authored-by: Nick Pope <nick@nickpope.me.uk>
2025-08-14 21:53:14 -03:00
mriduldhall
d4dd3e503c Fixed #36519 -- Made center template filter consistent for even/odd padding.
Refactored `center` template filter to match f-string behaviour,
producing consistent padding for both odd and even fillings.

Thanks Lily Acorn for the report and Natalia Bidart for the review.

Co-authored-by: Lily Acorn <code@lilyf.org>
2025-07-28 16:41:06 -03:00
mriduldhall
2d4ca62170 Added test for various widths in tests/template_tests/filter_tests/test_center.py. 2025-07-28 16:41:06 -03:00
django-bot
69a93a88ed Refs #36500 -- Rewrapped long docstrings and block comments via a script.
Rewrapped long docstrings and block comments to 79 characters + newline
using script from https://github.com/medmunds/autofix-w505.
2025-07-23 20:17:55 -03:00
Sarah Boyce
1ecf6889ca Removed double spaces after periods and within phrases. 2025-07-23 10:09:43 -03:00
Mike Edmunds
0f5b573d3d Fixed incorrectly concatenated string in SimpleBlockTagTests.test_simple_block_tag_with_context_missing_content(). 2025-07-22 13:36:01 +02:00
haileyajohnson
22506b2c16 Fixed #36465, Refs #35816 -- Disallowed '+' and '-' characters in template variable names.
Regression in 5183f7c287.

Thank you to Jon Banafato and Baptiste Mispelon for the report.
2025-06-18 14:04:39 +02:00
Matti Pohjanvirta
1e9db35836 Fixed #36341 -- Preserved whitespaces in wordwrap template filter.
Regression in 55d89e25f4.

This work improves the django.utils.text.wrap() function to ensure that
empty lines and lines with whitespace only are kept instead of being
dropped.

Thanks Matti Pohjanvirta for the report and fix.

Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
2025-04-23 16:14:03 -03:00
farhan
4a293eff6f Fixed #28050 -- Added template name to TemplateSyntaxError. 2025-04-17 08:56:53 +02:00
Giannis Terzopoulos
a39c28706a Fixed #35529 -- Added support for positional arguments in querystring template tag.
Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
2025-03-25 12:23:41 -03:00
YogyaChugh
7164f08047 Fixed #36271 -- Raised TemplateSyntaxError when using a relative template path with an unknown origin. 2025-03-24 17:05:58 +01:00
Natalia
0b4f2d8d39 Fixed #36268 -- Added leading ? in every querystring template tag result.
Thanks Sarah Boyce for the report.
2025-03-24 11:53:42 -03:00
Natalia
639eafbd27 Ensured consistency in naming in template_tests/syntax_tests/test_querystring.py. 2025-03-24 11:53:42 -03:00
Ahmed Nassar
ec7044c706 Fixed #36000 -- Deprecated HTTP as the default protocol in urlize and urlizetrunc. 2025-03-19 14:28:42 +01:00
haileyajohnson
5183f7c287 Fixed #35816 -- Handled parsing of scientific notation in DTL. (#19213)
* Refs #35816 -- Improved test coverage of FilterExpression.

* Fixed #35816 -- Made FilterExpression parse scientific numbers.

---------

Co-authored-by: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com>
2025-03-11 08:02:27 +01:00
Sarah Boyce
55d89e25f4 Fixed CVE-2025-26699 -- Mitigated potential DoS in wordwrap template filter.
Thanks sw0rd1ight for the report.
2025-03-06 09:38:40 +01:00
Jonathan Ströbele
240421c7c4 Fixed #36186 -- Added forloop.length variable within a template for loop. 2025-02-24 16:25:53 +01:00
Sarah Boyce
05002c153c Fixed #36182 -- Returned "?" if all parameters are removed in querystring template tag.
Thank you to David Feeley for the report and Natalia Bidart for the review.
2025-02-13 15:49:25 +01:00
Mike Edmunds
29ba75e6e5 Fixed #36013 -- Removed use of IDNA-2003 in django.utils.html.
Removed obsolete and potentially problematic IDNA 2003 ("punycode")
encoding of international domain names in smart_urlquote() and Urlizer,
which are used (only) by AdminURLFieldWidget and the urlize/urlizetrunc
template filters. Changed to use percent-encoded UTF-8, which defers
IDNA details to the browser (like other URLs rendered by Django).
2025-01-23 10:38:15 +01:00
Sarah Boyce
b721f12760 Fixed #35998 -- Added caching to django.utils.html.urlize(). 2025-01-14 17:59:32 +01:00
Gabriel Nick Pivovarov
55855bc6d0 Fixed #35493 -- Allowed template self-inclusion with relative paths.
Co-authored-by: Brock <bsmick97@gmail.com>
2024-12-06 10:44:10 +01:00
Natalia
15ca75449b Refs #10941 -- Added tests in querystring template tag.
These extra tests assert over the handling of empty params (None, empty
dict, empty QueryDict), and also for dicts having non-string keys.
2024-11-29 08:27:11 +01:00
Natalia
f2b44ef408 Refs #10941 -- Added helper and refactored tests for querystring template tag.
Thank you Sarah Boyce for the review and suggestions.
2024-11-29 08:27:11 +01:00
Klaas van Schelven
1722f2db58 Fixed #35897 -- Removed unnecessary escaping in template's get_exception_info(). 2024-11-28 15:53:31 +01:00
Jake Howard
4c452cc377 Fixed #35535 -- Added template tag decorator simple_block_tag().
Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
2024-11-19 14:35:02 -03:00
Mariusz Felisiak
8d7b1423f8 Refs #35844 -- Fixed copying BaseContext and its subclasses on Python 3.14+.
super objects are copyable on Python 3.14+:

5ca4e34bc1

and can no longer be used in BaseContext.__copy__().
2024-11-18 16:05:37 +01:00
ekinertac
68cee15a8f Fixed #35789 -- Improved the error message raised when the tag must be first in the template. 2024-10-10 12:21:02 +02:00
Fabian Braun
d2c97981fb Fixed #35735 -- Enabled template access to methods and properties of classes with __class_get_item__. 2024-09-17 09:52:44 +02:00
Lily Foote
d50f61be7f Improved TokenType.COMMENT test by using correct block syntax in template tests. 2024-09-16 10:30:30 -03:00
Sarah Boyce
320dd27412 Fixed CVE-2024-45230 -- Mitigated potential DoS in urlize and urlizetrunc template filters.
Thanks MProgrammer (https://hackerone.com/mprogrammer) for the report.
2024-09-03 09:22:32 -03:00
Mariusz Felisiak
7fb15ad5bc Fixed #35661 -- Fixed test_too_many_digits_to_rander() test crash on PyPy.
Thanks Michał Górny for the report.
2024-08-08 09:53:04 +02:00
Sarah Boyce
c19465ad87 Fixed CVE-2024-41989 -- Prevented excessive memory consumption in floatformat.
Thanks Elias Myllymäki for the report.

Co-authored-by: Shai Berger <shai@platonix.com>
2024-08-06 08:50:08 +02:00
nessita
1b277b45cc Added dedicated test for invalid inputs in floatformat template filter tests.
Co-authored-by: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com>
2024-07-25 16:15:53 -03:00
nessita
5dc17177c3 Refs #10941 -- Renamed test file test_query_string.py to test_querystring.py.
This follows previous renames made in 27043bde5b.
2024-07-16 22:14:52 -03:00
Sarah Boyce
27043bde5b Refs #10941 -- Renamed query_string template tag to querystring. 2024-07-15 13:28:55 -03:00
Sarah Boyce
c6d1f98d26 Improved test coverage of urlize. 2024-07-10 09:32:02 +02:00
George Y. Kussumoto
2a32b23382 Fixed #35417 -- Updated BaseContext.new() with values to create a context that can be flattened. 2024-06-13 14:22:40 +02:00
Tim Richardson
e64d42e753 Fixed #35395 -- slice filter crashes on an empty dict with Python 3.12.
Keep consistent behaviour of slice() filter between python 3.12 and prior
versions in the case of a dict passed to the filter (catch the new to python
3.12 KeyError exception).
2024-04-24 10:53:38 +02:00
David Smith
6ee37ada32 Fixed #30686 -- Used Python HTMLParser in utils.text.Truncator. 2024-02-07 09:46:25 +01:00
David Smith
70f39e46f8 Refs #30686 -- Fixed text truncation for negative or zero lengths. 2024-02-07 05:18:35 +01:00
David Smith
48a4693951 Refs #30686 -- Improved test coverage of Truncator. 2024-02-06 16:35:08 +01:00