def rakuten_price_search(request): parameters=[{‘name’:’keyword’,’label’:’検索キーワード:※○’}, {‘name’:’shopCode’,’label’:’ショップコード:※○’}, {‘name’:’itemCode’,’label’:’商品コード:※○’}, {‘name’:’genreId’,’label’:’ジャンルID:※○’}, {‘name’:’tagIds’,’label’:’タグID’}, {‘name’:’hits’,’label’:’1ページあたりの取得件数’}, {‘name’:’page’,’label’:’取得ページ’}, {‘name’:’sort’,’label’:’ソート’}, {‘name’:’minPrice’,’label’:’最小価格’}, {‘name’:’maxPrice’,’label’:’最大価格’}, {‘name’:’availability’,’label’:’販売可能’}, {‘name’:’field’,’label’:’検索フィールド’}, {‘name’:’carrier’,’label’:’キャリア’}, {‘name’:’imageFlag’,’label’:’商品画像有無フラグ’}, {‘name’:’orFlag’,’label’:’OR検索フラグ’}, {‘name’:’NGKeyword’,’label’:’除外キーワード’}, {‘name’:’purchaseType’,’label’:’購入種別’}, {‘name’:’shipOverseasFlag’,’label’:’海外配送フラグ’}, {‘name’:’shipOverseasArea’,’label’:’海外配送対象地域’}, {‘name’:’asurakuFlag’,’label’:’あす楽フラグ’}, {‘name’:’asurakuArea’,’label’:’あす楽配送対象地域’}, {‘name’:’pointRateFlag’,’label’:’ポイント倍付けフラグ’}, {‘name’:’pointRate’,’label’:’商品別ポイント倍付け’}, {‘name’:’postageFlag’,’label’:’送料フラグ’}, {‘name’:’creditCardFlag’,’label’:’クレジットカード利用可能フラグ’}, {‘name’:’giftFlag’,’label’:’ギフト対応フラグ’}, {‘name’:’hasReviewFlag’,’label’:’レビューありフラグ’}, {‘name’:’maxAffiliateRate’,’label’:’アフィリエイト料率最大制限値’}, {‘name’:’minAffiliateRate’,’label’:’アフィリエイト料率最小制限値’}, {‘name’:’hasMovieFlag’,’label’:’動画ありフラグ’}, {‘name’:’pamphletFlag’,’label’:’資料請求対応フラグ’}, {‘name’:’appointDeliveryDateFlag’,’label’:’配送日指定対応フラグ’}, {‘name’:’elements’,’label’:’出力要素’}, {‘name’:’genreInformationFlag’,’label’:’ジャンルごとの商品数取得フラグ’}, {‘name’:’tagInformationFlag’,’label’:’タグごとの商品数取得フラグ’}, ] if request.method == ‘POST’: # ファイルの取得 files = request.FILES.getlist(‘files’) # keyword,genre_id,store=””,””,”” # 他の情報の取得 keyword = request.POST.get(‘keyword’) genre_id = request.POST.get(‘genre_id’) shopCode = request.POST.get(‘shopCode’) proce_sort_option= request.POST.get(‘proce_sort_option’) fetch_rakuten_data(keyword,genre_id,shopCode,proce_sort_option) # items = RakutenItem.objects.all()[:30] # items = RakutenItem.objects.order_by(‘-created_at’)[:30] items = RakutenItem.objects.order_by(‘-updated_at’)[:30] # items = RakutenItem.objects.order_by(‘-startTime’)[:30] # print(items) # parameters = [‘keyword’, ‘shopCode’, ‘itemCode’, ‘genreId’, ‘tagId’, ‘hits’, ‘page’, ‘sort’, ‘minPrice’, ‘maxPrice’, ‘availability’, ‘field’, ‘carrier’, ‘imageFlag’, ‘orFlag’, ‘NGKeyword’, ‘purchaseType’, ‘shipOverseasFlag’, ‘shipOverseasArea’, ‘asurakuFlag’, ‘asurakuArea’, ‘pointRateFlag’, ‘pointRate’, ‘postageFlag’, ‘creditCardFlag’, ‘giftFlag’, ‘hasReviewFlag’, ‘maxAffiliateRate’, ‘minAffiliateRate’, ‘hasMovieFlag’, ‘pamphletFlag’, ‘appointDeliveryDateFlag’, ‘elements’, ‘genreInformationFlag’, ‘tagInformationFlag’] return render(request, “tools/rakuten_price_search.html”, {‘items’: items,”parameters”:parameters}) else: # parameters = [‘keyword’, ‘shopCode’, ‘itemCode’, ‘genreId’, ‘tagId’, ‘hits’, ‘page’, ‘sort’, ‘minPrice’, ‘maxPrice’, ‘availability’, ‘field’, ‘carrier’, ‘imageFlag’, ‘orFlag’, ‘NGKeyword’, ‘purchaseType’, ‘shipOverseasFlag’, ‘shipOverseasArea’, ‘asurakuFlag’, ‘asurakuArea’, ‘pointRateFlag’, ‘pointRate’, ‘postageFlag’, ‘creditCardFlag’, ‘giftFlag’, ‘hasReviewFlag’, ‘maxAffiliateRate’, ‘minAffiliateRate’, ‘hasMovieFlag’, ‘pamphletFlag’, ‘appointDeliveryDateFlag’, ‘elements’, ‘genreInformationFlag’, ‘tagInformationFlag’] return render(request, “tools/rakuten_price_search.html”,{“parameters”:parameters})

ありがとうございます。フォームのinputに値を保持するためには、POSTされたデータを正しく表示する方法を確認しましょう。

フォーム内の各input要素の value 属性の中身を次のように修正してみてください:

html
<input type="text" class="form-control" id="{{ parameter.name }}" name="{{ parameter.name }}" value="{% if parameter.name in request.POST %}{{ request.POST.parameter.name }}{% endif %}">

これにより、request.POST 辞書内で parameter.name がキーとして存在する場合にその値を表示します。もしもこの修正でも正しく動作しない場合、デバッグのために以下の手順を試してみてください:

  1. フォームが正しくPOSTされているか確認してください。ブラウザの開発者ツールなどを使用して、ネットワークリクエストを確認することができます。
  2. request.POST の中身を出力して、正しいデータがPOSTされているか確認してください。例: {{ request.POST }} をHTMLに出力して確認する。
  3. フォームのinputフィールドに value="{{ request.POST }}" などとして、データの構造を確認する。

もし問題が解決しない場合、他にも修正が必要かもしれません。新しい情報があれば教えてください。

未分類

Posted by ぼっち