Django: what’s new in 6.0

2025/12/10 5:33

Django: what’s new in 6.0

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:


Django 6.0 – 主なリリースハイライト

リリース日 2025‑12‑03

エリア変更点意義
テンプレート新しい
{% partialdef %}
/
{% endpartialdef %}
タグで、テンプレートを再利用可能なフラグメントに分割し、インラインまたは別途レンダリングでき、htmx とも相性が良い。
テンプレートの DRY 化、ボイラープレート削減、コンポーネント再利用の容易化。
バックグラウンドタスク組み込み「Tasks」フレームワーク:
@task
デコレーター +
Task.enqueue()
API。組み込みバックエンド(
ImmediateBackend
DummyBackend
)があり、実稼働ではサードパーティパッケージ(例:
django-tasks
DatabaseBackend
)が必要。
単純なジョブに対して外部タスクライブラリの必要性を排除しつつ、実稼働時の柔軟性は維持。
セキュリティ
ContentSecurityPolicyMiddleware
を追加。
SECURE_CSP
SECURE_CSP_REPORT_ONLY
で設定可能。ノンスは自動生成され、テンプレート内では
{% csp_nonce %}
nonce="{{ csp_nonce }}"
)で使用できる。
自動ノンス処理付きの CSP サポートを組み込み、XSS リスクをデフォルトで低減。
メールDjango のメール API が Python の
email.message.EmailMessage
を利用するように変更。
EmailMessage.send()
は内部でこの API に変換し、インライン添付は
MIMEPart
オブジェクトで追加可能。
標準ライブラリ互換のモダンなメール処理と簡易的な添付サポート。
Mail API の非推奨
django.core.mail
API ではキーワード専用引数が必須となり、位置オプションパラメータは警告を出し将来的にエラーになる。
より明確な API 使用を促進し、コードの未来保証を実現。
シェル自動インポートが拡張され、
settings
connection
models
reset_queries
functions
timezone
が追加。
もっと高速で便利な対話型開発環境。
ORM• 動的フィールド(
db_default
GeneratedField
)は
save()
後に SQL RETURNING を通じてリフレッシュされる;未対応バックエンドでは次回アクセス時まで遅延。
StringAgg
集約がすべてのサポートデータベースで動作;文字列リテラル区切りは
Value()
で包む必要。
• デフォルト主キー型が
BigAutoField
に変更され、新規プロジェクトでは
DEFAULT_AUTO_FIELD
を設定しなくなる。
モデル定義の簡素化、パフォーマンス向上、大規模アプリでの PK 終了防止。
テンプレート変数 & タグ
forloop.length
が追加され、ループ長にアクセス可能;更新された
querystring
タグは
?
で接頭辞し、複数位置引数を受け取り、重複時には優先順位でマージ。
より表現力豊かなテンプレートロジックとクリーンなクエリ文字列処理。
コミュニティDjango 6.0 に 174 人の貢献者が参加。リリースノートではアップグレード準備を強調し、開発者に新機能を試すよう呼びかける;今後のリリースでタスクバックエンドや CSP 機能が拡張される可能性。健全なコミュニティサポートとさらなる改善へのロードマップを示唆。

まとめ:
Django 6.0 は、再利用可能なテンプレートフラグメント、オプションの組み込みタスクシステム、ノンス付き CSP ミドルウェア、モダン化されたメール API など、実務で即使える改善を提供します。さらに ORM の強化、シェルの利便性向上、旧パターンの非推奨により、ボイラープレート削減・セキュリティ向上・大規模プロジェクトの将来準備が実現されます。


本文

Django 6.0 – 主要変更点


django‑upgrade を使ったアップグレード

Django 5.2以前からプロジェクトを移行する場合は django-upgrade を試してみてください。
自動的に古い Django コードを新機能に合わせて更新し、非推奨警告も修正します。Django 6.0 には 5 つのファイザーが含まれています。


1. テンプレートパーシャル

Django はテンプレート内で再利用できる小さな名前付きフラグメント、template partials をサポートします。別個にレンダリングすることも可能です。

{% partialdef filter_controls %}
    <form>
        {{ filter_form }}
    </form>
{% endpartialdef %}

{% partial filter_controls %}

定義自体を表示したい場合は

inline
を使います。


2. タスクフレームワーク

組み込みのバックグラウンドタスクシステムが追加されました。

from django.tasks import task

@task
def resize_video(video_id):
    ...

resize_video.enqueue(video.id)

開発時に利用できるバックエンドは以下です:

  • ImmediateBackend – 同期で実行。
  • DummyBackend – 何もしない。テスト向け。

本番環境では、例えば django-tasks

DatabaseBackend
などサードパーティ製を使用してください。


3. コンテンツセキュリティポリシー(CSP)対応

ミドルウェアを追加します:

MIDDLEWARE = [
    # …
    "django.middleware.csp.ContentSecurityPolicyMiddleware",
]

設定は次のように行います。

SECURE_CSP_REPORT_ONLY = {
    "script-src": [CSP.NONCE, CSP.STRICT_DYNAMIC],
    "object-src": [CSP.NONE],
    "base-uri": [CSP.NONE],
}

Nonce の生成は組み込みで、タグに

nonce="{{ csp_nonce }}"
を付与します。


4. メール API の更新

Django は Python のモダンなメール API (

email.message.EmailMessage
) を採用しました。既存の使い方はそのままです。

from django.core.mail import EmailMessage

email = EmailMessage(
    subject="🐼 Need more bamboo",
    body="…",
    from_email="zookeeper@example.com",
    to=["supplies@example.com"],
)
email.attach_file("/media/bamboo_cupboard.jpg")
email.send()

インライン添付

from email.message import MIMEPart
import email.utils

cid = email.utils.make_msgid()
inline_image = MIMEPart()
inline_image.set_content(
    panda_jpeg,
    maintype="image",
    subtype="jpeg",
    disposition="inline",
    cid=cid,
)
message.attach(inline_image)

5.
django.core.mail
API の位置引数

あまり使われないパラメータはキーワード引数で渡す必要があります。

send_mail(
    subject="🐼 Panda of the week",
    body="…",
    from_email="updates@example.com",
    ["adam@example.com"],
    fail_silently=True,
)

6. 自動シェルインポートの拡張

./manage.py shell
は次のユーティリティを自動でインポートします:

  • settings
  • connection
    ,
    reset_queries
  • models
    ,
    functions
  • timezone

必要に応じてドキュメントからリストをカスタマイズできます。


7.
save()
時の動的フィールド更新

以下で定義されたフィールドは、

save()
後に SQL の
RETURNING
句を使って自動更新されます(SQLite, PostgreSQL, Oracle)。

  • db_default
  • GeneratedField
  • 式による代入

MySQL/MariaDB では遅延処理としてマークされ、後で自動更新されます。


8. ユニバーサルな
StringAgg
集約

すべてのバックエンドで利用可能です:

from django.db.models import StringAgg, Value

videos = Video.objects.annotate(
    chapter_ids=StringAgg("chapter", delimiter=Value(","))
)

9. デフォルト PK 型を
BigAutoField
に変更

DEFAULT_AUTO_FIELD
はデフォルトで
django.db.models.BigAutoField
が設定されます。
新規プロジェクトでは追加の設定が不要です。


10. テンプレート変数
forloop.length

ループ内で

{{ forloop.length }}
を使用できます:

{% for goose in geese %}
    <li>{{ forloop.counter }}/{{ forloop.length }}: {{ goose.name }}</li>
{% endfor %}

11. クエリストリングテンプレートタグの拡張

  1. 一貫した
    ?
    プレフィックス
    – 空の場合でもクエリパラメータをクリアします。
  2. 複数位置引数 – 複数マッピングを統合できます。
<a href="{% querystring request.GET super_search_params %}">Super search</a>

まとめ

Django 6.0 は、テンプレートパーシャルや組み込みタスクフレームワーク、CSP サポート、モダンメール処理などの強力な新機能と改善を提供しつつ、後方互換性も維持しています。
今日からアップグレードして、新しい機能をぜひ体験してください。

同じ日のほかのニュース

一覧に戻る →

2025/12/10 0:00

Show HN: Gemini Pro 3 hallucinates the HN front page 10 years from now

## Japanese Translation: ## 改訂版まとめ この記事では、最近のさまざまな技術的マイルストーンとリリースをレビューしています。 1. **SpaceX**:Starship HLS‑9 が Sea of Tranquility からテレメトリーを正常に送信しました。 2. **Linux Kernel**:バージョン 7.4 に完全な上流化された 100 % Rust カーネルが含まれています。 3. **開発者プラクティス**:生のコードを書くこととコンパイラプロンプトを使用することを対比した議論があります。 4. **人工知能**:LLaMA‑12 7B モデルは WebAssembly を介してコンタクトレンズ上で動作し、YC シード付きスタートアップ Nia は自律型コーディングエージェントを導入しています。 5. **教育ツール**:AlgoDrill は LeetCode パターンの強化に向けたインタラクティブなプラットフォームを提供します。 6. **エネルギー研究**:ITER の炉は 20 分間連続で正のエネルギー収支を達成しました。 7. **ハードウェア修理**:2024 年製 Framework Laptop を復元する方法を詳細に説明したレトロスペクティブガイドがあります。 8. **クラウドサービス**:Google は Gemini Cloud Services の提供を終了します。 9. **グラフィックスプログラミング**:WebGPU 2.0 により第 5 次元の可視化が可能になりました。 10. **Linux ディストリビューション**:Debian がバージョン 18 “Trixie” をリリースしました。 11. **プログラミング言語提案**:`sudo` ユーティリティを Zig で書き直す提案が提示されています。 この記事はこれらの出来事を文脈に置き、各々が過去の成功にどのように基づいているかを指摘し、その進歩が今後の開発実践、AI 統合、およびクラウドサービス戦略に影響を与えることを示唆しています。

2025/12/10 2:08

PeerTube is recognized as a digital public good by Digital Public Goods Alliance

## Japanese Translation: ### Summary PeerTubeはプラットフォームに依存しない多言語対応のビデオホスティングおよびライブストリーミングソリューションで、正式にデジタル公共財(DPG ID0092472)として承認されています。2025年10月7日にRicardo Torresによるレビューが行われ、Platform Independence評価を含むすべてのDPG標準要件を満たしていることが確認されました。これにより、ベンダーロックインなしで任意のインフラ上で実行できることが保証されています。ソースコードはGitHub(`github.com/Chocobozzz/PeerTube`)とFramagit(`framagit.org/framasoft/peertube`)で公開されており、透明性とコミュニティの貢献を確保しています。PeerTubeは44以上の言語(エスペラント、アラビア語、中国語簡体字・繁体字、日本語、韓国語、スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語、ロシア語など)をサポートし、フランスの教育省からイタリアの国家研究評議会、複数のドイツ大学、Blender、Debianプロジェクト、および活動家グループまで、多様な組織で既に利用されています。承認は2026年10月7日まで有効であり、毎年自己申告による使用状況更新が求められます。この推奨は、機関やオープンソースコミュニティが分散型ビデオプラットフォームを採用することを促進し、メディアホスティングの風景をよりオープンで多言語化、ベンダー非依存な解決策へとシフトさせる可能性があります。

2025/12/10 6:19

Qt, Linux and everything: Debugging Qt WebAssembly

## Japanese Translation: > WebAssembly にコンパイルされた Qt アプリケーションのデバッグは、ビルドに完全な DWARF デバッグシンボルを含め、Chrome の「C/C++ DevTools Support (DWARF)」拡張機能を使用する場合に最も効率的です。Emscripten を `-g`(または `CMAKE_BUILD_TYPE=Debug`)で構成すると、生成されるバイナリに絶対パス情報が含まれるため、追加のシンボリックリンクは不要です。Qt のデフォルトのデバッグライブラリは `-g2` しか使用しませんが、より高いレベルのフラグで再ビルドすると、ブレークポイントやスタックトレースに必要なすべてのシンボルデータを保持できます。再ビルド後、DWARF 拡張機能を有効にした Chrome を起動し、WebAssembly ページを読み込み、DevTools がシンボルを解析するまで待ちます。その後、ネイティブ Qt デスクトップアプリと同様にブレークポイントを設定でき、ページのリロード時に実行がそのポイントで停止します。これによりステップスルーデバッグが可能になります。この方法は Chrome のみで利用できます。Safari や Firefox ではソースマップにフォールバックする必要があります。完全なデバッグ情報を有効にすると、開発者は問題の診断時間を短縮でき、Qt ベースの Web プロジェクトのコード品質が向上します。

Django: what’s new in 6.0 | そっか~ニュース