libro
www.tuyano.com
初心者のためのDjango 2.0入門

インタラクティブな値のやり取り (2/4)

作成:2017-12-23 08:52
更新:2017-12-23 08:52

■URLで値を渡す (2)

URLを利用して値を渡す方法はもう1つあります。それは、URLのルーティング設定で、URLの一部を値として取り出せるように設定しておくことです。

アクセスするURLと呼び出されるビュー用関数は、urls.pyにルーティングの設定を用意しておくことで関連付けられます。この値を、少し修正してやるのです。「hello」内のurls.pyに記述されているurlpatternsの値を以下のように修正して下さい。
urlpatterns = [
    path('<int:num>/', views.index, name='index'),
]

ここでは、割り当てるパスに<int:num>というものが指定されています。これは、「ここにint型の値が来て、それはnumという名前で渡される」ということを示しています。

では、この
urlpatterns
で割り当てられるviews.pyindex関数を修正しましょう。下のリスト欄のように書き換えて下さい。そして修正できたら以下のようにアクセスをしてみましょう。
http://localhost:8000/hello/100

これで、画面には「100 までの合計は、 5050」と表示されます。URLに記述した100という値がビュー側で取り出され処理されていることがわかるでしょう。

修正したindex関数を見ると、以下のように定義されていますね。
def index(request, num):

index関数の引数に、numが追加されています。これが、urlpatternsで設定されたnumという値なのです。こんな具合に、urlpatterns<型 : ○○>という形で用意された値は、そのままビュー用関数の引数として用意されます。後は、その値をそのまま取り出して利用するだけ、というわけです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

def index(request, num):
    total = num
    for i in range(num):
        total += i
    context = {
        'msg': str(num) + ' までの合計は、 ' + str(total),
    }
    return render(request, 'hello/index.html', context)

※関連コンテンツ

「初心者のためのDjango 2.0入門」に戻る