記事ページごとにurls.pyを設定するの面倒なんだけど

Djangoでは、アプリケーション内で記事ページごとにurls.pyを設定するのが一般的ですが、もし簡略化したい場合、以下のようにしても良いです。一つのurls.pyに複数のビューをまとめることができます。

  1. urls.pyの設定:
    Djangoアプリケーション内のurls.pyファイルに、記事ページへのパスを追加します。

    python
    # toolsアプリケーション内のurls.py from django.urls import path from .views import ConversionCharacterCodeView, ArticleView app_name = 'tools' urlpatterns = [ path('conversion_character_code/', ConversionCharacterCodeView.as_view(), name='conversion_character_code'), path('article/', ArticleView.as_view(), name='article'), # 他のパスについても同様に追加 ]

    ここで、ConversionCharacterCodeViewArticleViewはそれぞれのビュークラスです。

  2. ビューの作成:
    views.pyファイルにArticleViewを作成します。他のビューも同じファイルに追加できます。

    python
    # toolsアプリケーション内のviews.py from django.views.generic import TemplateView class ConversionCharacterCodeView(TemplateView): template_name = 'tools/conversion_character_code.html' class ArticleView(TemplateView): template_name = 'tools/article.html'

    これで、ConversionCharacterCodeViewArticleViewviews.pyに共存しています。

  3. テンプレートの作成:
    templates/toolsディレクトリにconversion_character_code.htmlarticle.htmlを作成します。

    html
    <!-- tools/templates/tools/conversion_character_code.html --> {% extends "tools/base.html" %} {% block title %}CSV文字コード変換{% endblock %} {% block content %} <h2>CSV文字コード変換</h2> <!-- ページの内容を記述 --> {% endblock %}
    html
    <!-- tools/templates/tools/article.html --> {% extends "tools/base.html" %} {% block title %}記事ページ{% endblock %} {% block content %} <h2>記事ページ</h2> <!-- 記事の内容を記述 --> {% endblock %}
  4. リンクを作成:
    他のページから記事ページへのリンクを作成します。

    html
    <!-- conversion_character_code.html や他のテンプレート内 --> <a href="{% url 'tools:article' %}">記事ページへ</a>

    同じく、urlテンプレートタグを使用して、articleという名前のパスに対応するURLを生成しています。

このようにして、複数のビューを一つのurls.pyにまとめ、記事ページごとにviews.pytemplatesディレクトリ内で管理できます。

未分類

Posted by ぼっち