【Django】urlのパラメータをテンプレートに渡す

Djangoを使用したアプリケーションにて、urlにパラメータを設定し、ビュー側でその値を使用していい感じの処理をしたい場合の方法を、備忘録として残します。

目次

結論

from django.urls import path

from . import views


app_name = 'app_name'
urlpatterns = [
    path('', views.IndexView.as_view(), name="index"),
    path('result/<str:date>/<str:id>/<str:no>/', views.ResultView.as_view(), name="result"), 
]
from django.views import generic
from django.http import HttpResponse


class ResultView(generic.TemplateView):
    template_name = "result.html"

    def get(self, request, **kwargs):
        context = {
            'date': kwargs['date'], 
            'id': kwargs['id'], 
            'no': kwargs['no'], 
        }

        return self.render_to_response(context)
<body>
    <a href="{% url "result:result' 20220901 10 1 %}">LINK</a>
</body>
<body>
    <h3>{{ date }}</h3>
    <h3>{{ id }}</h3>
    <h3>{{ no }}</h3>
</body>

以上で、「https:…./result/20220901/10/1/」にアクセスすると、このように表示される。

もう少し詳しく

噛み砕いて説明します。

ルーティング

urls.pyにて、ルーティングの設定を行います。

from django.urls import path

from . import views


app_name = 'app_name'
urlpatterns = [
    path('', views.IndexView.as_view(), name="index"),
    path('result/<str:date>/<str:id>/<str:no>/', views.ResultView.as_view(), name="result"), 
]

「/result/<任意の文字列>/<任意の文字列>/<任意の文字列>/」というurlパターンにマッチした場合、レンダリング処理をResultViewに依頼しています。

また、それぞれの文字列は date・id・no という名前でビュー側で取り出す事ができます。

ビュー

from django.views import generic
from django.http import HttpResponse


class ResultView(generic.TemplateView):
    template_name = "result.html"

    def get(self, request, **kwargs):
        context = {
            'date': kwargs['date'], 
            'id': kwargs['id'], 
            'no': kwargs['no'], 
        }

        return self.render_to_response(context)

続いてビューです。

resultページにアクセスした際に、設定したurlパラメータを 10 ~ 12 行目で取り出しています。

さらに、取り出したパラメータを context の格納し、テンプレート側に渡しています。

テンプレート

<body>
    <h3>{{ date }}</h3>
    <h3>{{ id }}</h3>
    <h3>{{ no }}</h3>
</body>

{{}} を使用し、ビューから受け取ったurlパラメータを表示させています。

まとめ

URLパラメータをビューに渡す方法を備忘録がてら纏めました。

他にもさまざまなDjangoに関する記事がございますので、よかったらご覧ください。

案件、ありますか?

「メインの仕事があるけれど、週1、2日だけできる仕事ないかな、、、」

「ある程度スキルが身に付いてはきたけど、そのスキルを活用できる場が欲しい」

なんて悩みが以前はありました。

自分で仕事を探しに行くのも大事ですが、蛇の道は蛇。その道の人に頼むことで、自分だけでは見つからないような案件に携わることができます。

IT PRO パートナーズでは、簡単に無料でアカウントを登録でき、さらにはエージェントさんに希望の働き方・案件の種類を提示することでお仕事を紹介してくれます!

登録自体も非常に簡単で、「エージェントさんとの面談を希望する」という欄にチェックをするだけで、エージェントさんから直接連絡をいただくことができます。

驚くほど簡単で正直拍子抜けしてしまいました笑

もしお仕事探しに困っておりましたら、一度登録し案件を眺めてみることをおすすめします!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

勤めていた設計会社を退社し、フリーランスとして活動しています
また、趣味で主にpyhonを用いて機械学習を行なっています!
現在競艇の予測モデルの開発中です。

コメント

コメントする

目次