インタラクティブな値のやり取り (2/4)
作成:2017-12-23 08:52
更新:2017-12-23 08:52
更新:2017-12-23 08:52
■URLで値を渡す (2)
URLを利用して値を渡す方法はもう1つあります。それは、URLのルーティング設定で、URLの一部を値として取り出せるように設定しておくことです。
アクセスするURLと呼び出されるビュー用関数は、urls.pyにルーティングの設定を用意しておくことで関連付けられます。この値を、少し修正してやるのです。「hello」内のurls.pyに記述されているurlpatternsの値を以下のように修正して下さい。
ここでは、割り当てるパスに<int:num>というものが指定されています。これは、「ここにint型の値が来て、それはnumという名前で渡される」ということを示しています。
では、この
これで、画面には「100 までの合計は、 5050」と表示されます。URLに記述した100という値がビュー側で取り出され処理されていることがわかるでしょう。
修正したindex関数を見ると、以下のように定義されていますね。
index関数の引数に、numが追加されています。これが、urlpatternsで設定されたnumという値なのです。こんな具合に、urlpatternsで<型 : ○○>という形で用意された値は、そのままビュー用関数の引数として用意されます。後は、その値をそのまま取り出して利用するだけ、というわけです。
アクセスするURLと呼び出されるビュー用関数は、urls.pyにルーティングの設定を用意しておくことで関連付けられます。この値を、少し修正してやるのです。「hello」内のurls.pyに記述されているurlpatternsの値を以下のように修正して下さい。
urlpatterns = [
path('<int:num>/', views.index, name='index'),
]
ここでは、割り当てるパスに<int:num>というものが指定されています。これは、「ここにint型の値が来て、それはnumという名前で渡される」ということを示しています。
では、この
urlpatternsで割り当てられるviews.pyのindex関数を修正しましょう。下のリスト欄のように書き換えて下さい。そして修正できたら以下のようにアクセスをしてみましょう。
http://localhost:8000/hello/100
これで、画面には「100 までの合計は、 5050」と表示されます。URLに記述した100という値がビュー側で取り出され処理されていることがわかるでしょう。
修正したindex関数を見ると、以下のように定義されていますね。
def index(request, num):
index関数の引数に、numが追加されています。これが、urlpatternsで設定されたnumという値なのです。こんな具合に、urlpatternsで<型 : ○○>という形で用意された値は、そのままビュー用関数の引数として用意されます。後は、その値をそのまま取り出して利用するだけ、というわけです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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)
※関連コンテンツ