前提・実現したいこと
djangoでユーザーがtextareaに入力した文字列を一行ずつ取得し、文の先頭の数字とそれ以外の文に分けたあとで、
文の先頭の数字の回数分だけlistにそれ以外の文を追加するという機能を実装しようとしたのですが、上手く行きませんでした。
入力値
3 Dive Down (XLN) 53
1 Essence Capture (RNA) 37
期待する結果
以下の値のlistを取得できる。
["Dive Down (XLN) 53","Dive Down (XLN) 53","Dive Down (XLN) 53","Essence Capture (RNA) 37"]
発生している問題・エラーメッセージ
invalid literal for int() with base 10: ''
問題が発生した箇所
stripNum=int(num.rstrip())
該当のソースコード
python
1views.py 2 3from django.shortcuts import render 4import random 5import numpy 6from django.http.response import HttpResponse 7 8 9# Create your views here. 10class mulliganHand: 11 12 def post_list(request): 13 c={ 14 "messege":"sumple messege", 15 } 16 return render(request, 'mulligan/post_list.html', c) 17 18 def getDeckList(request): 19 20 d={ 21 "firstHand":request.POST["saveDeck"], 22 } 23 loop=1 24 deck=[] 25 data =d["firstHand"]#デッキのデータを読み込む 26 for cardList in data: 27 num,*card=cardList.split(" ",1)#カードの枚数とカードの名前を分ける 28 stripNum=int(num.rstrip()) 29 while loop<=stripNum: 30 deck.extend([*card]) #デッキリストのカードを先頭から一行ずつ読み込む 31 loop+=1 32 loop=1 33 34 a={"deck":deck[0]} 35 return render(request,"mulligan/getDeckList.html",a) 36 37 38
html
1post_list.html 2 3<!DOCTYPE html> 4 5<html lang="ja"> 6 <head> 7 <meta charset="utf-8"> 8 </head> 9 10 <body> 11 <h1>マリガン練習アプリ</h1> 12 <form method="post" action="getDeckList/"> 13 {% csrf_token %} 14 <label>デッキ</label> 15 <textarea name="saveDeck" rows="20" cols="80" wrap="hard"></textarea> 16 <input type="submit" value="保存"> 17 </form> 18 19</body> 20
試したこと
ユーザーがtextareaに入力した内容をそのまま表示することには成功しました。
補足情報(FW/ツールのバージョンなど)
Python3.7.1
django2.1.7
回答1件
あなたの回答
tips
プレビュー