前提・実現したいこと
Django上でWebアプリを作成しています。
「新規店舗の情報を記載して、登録ボタンで店舗登録を行う」機能を実装中に以下のエラーが発生しました。
以下は、エラーの原因とされる部分のみ記載しています。
該当のソースコード
まずはmodels.pyです。
python
1class ShopInfo(models.Model): 2 name = models.CharField(max_length=100, null=False, blank=False) 3 address = models.CharField(max_length=100, null=False, blank=False) 4 phonenumber = models.CharField(max_length=100, null=False, blank=False) 5 now_time = models.DateTimeField(verbose_name= '現在時刻', default=timezone.now) 6 open_time = models.DateTimeField(verbose_name= '開店時刻', default=timezone.now) 7 close_time = models.DateTimeField(verbose_name= '閉店時刻', default=timezone.now) 8 day_off_Mon = models.CharField(max_length=10, null=False, blank=False) 9 day_off_Tue = models.CharField(max_length=10, null=False, blank=False) 10 day_off_Wed = models.CharField(max_length=10, null=False, blank=False) 11 day_off_Thu = models.CharField(max_length=10, null=False, blank=False) 12 day_off_Fri = models.CharField(max_length=10, null=False, blank=False) 13 day_off_Sat = models.CharField(max_length=10, null=False, blank=False) 14 day_off_Sun = models.CharField(max_length=10, null=False, blank=False) 15 website = models.URLField() 16 17 def __str__(self): 18 ret = '<' + str(self.name) + '>' + self.address + self.phonenumber + self.open_time + '~' + self.close_time + self.day_off_Mon + self.day_off_Thu + self.day_off_Wed + self.day_off_Thu + self.day_off_Fri + self.day_off_Sat + self.day_off_Sun + self.website 19 return ret 20
次にviews.pyです。
実際にエラーに関わる部分は下のインスタンス生成のところです。
python
1def SubmitShopInfo(request): 2 # 名前を取得 3 if "name" in request.GET: 4 tmp_name = request.GET.get("name") 5 # 空欄の時は空白に設定 6 if len(tmp_name) > 0: 7 name = tmp_name 8 else: 9 name = "" 10 11 # 所在地を取得 12 if "address" in request.GET: 13 tmp_address = request.GET.get("address") 14 # 空欄の時は空白に設定 15 if len(tmp_address) > 0: 16 address = tmp_address 17 else: 18 address = "" 19 20 # 電話番号を取得 21 if "phonenumber" in request.GET: 22 tmp_phonenumber = request.GET.get("phonenumber") 23 # 空欄の時は空白に設定 24 if len(tmp_phonenumber) > 0: 25 phonenumber = tmp_phonenumber 26 else: 27 phonenumber = "" 28 29 # 開店時間を取得 30 if "open" in request.GET: 31 tmp_open = request.GET.get("open") 32 # 空欄の時は空白に設定 33 if len(tmp_open) > 0: 34 open = tmp_open 35 else: 36 open = "" 37 38 # 閉店時間を取得 39 if "close" in request.GET: 40 tmp_close = request.GET.get("close") 41 # 空欄の時は空白に設定 42 if len(tmp_close) > 0: 43 close = tmp_close 44 else: 45 close = "" 46 47 # 定休日を取得(月) 48 if "day_off_Mon" in request.GET: 49 tmp_day_off_Mon = request.GET.get("day_off_Mon") 50 # 空欄の時は空白に設定 51 if len(tmp_day_off_Mon) > 0: 52 day_off_Mon = tmp_day_off_Mon 53 else: 54 day_off_Mon = "" 55 56 # 定休日を取得(火) 57 if "day_off_Tue" in request.GET: 58 tmp_day_off_Tue = request.GET.get("day_off_Tue") 59 # 空欄の時は空白に設定 60 if len(tmp_day_off_Tue) > 0: 61 # global day_off_Tue 62 day_off_Tue = tmp_day_off_Tue 63 else: 64 day_off_Tue = "" 65 66 # 定休日を取得(水) 67 if "day_off_Wed" in request.GET: 68 tmp_day_off_Wed = request.GET.get("day_off_Wed") 69 # 空欄の時は空白に設定 70 if len(tmp_day_off_Wed) > 0: 71 day_off_Wed = tmp_day_off_Wed 72 else: 73 day_off_Wed = "" 74 75 # 定休日を取得(木) 76 if "day_off_Thu" in request.GET: 77 tmp_day_off_Thu = request.GET.get("day_off_Thu") 78 # 空欄の時は空白に設定 79 if len(tmp_day_off_Thu) > 0: 80 day_off_Thu = tmp_day_off_Thu 81 else: 82 day_off_Thu = "" 83 84 # 定休日を取得(金) 85 if "day_off_Fri" in request.GET: 86 tmp_day_off_Fri = request.GET.get("day_off_Fri") 87 # 空欄の時は空白に設定 88 if len(tmp_day_off_Fri) > 0: 89 day_off_Fri = tmp_day_off_Fri 90 else: 91 day_off_Fri = "" 92 93 # 定休日を取得(土) 94 if "day_off_Sat" in request.GET: 95 tmp_day_off_Sat = request.GET.get("day_off_Sat") 96 # 空欄の時は空白に設定 97 if len(tmp_day_off_Sat) > 0: 98 day_off_Sat = tmp_day_off_Sat 99 else: 100 day_off_Sat = "" 101 102 # 定休日を取得(日) 103 if "day_off_Sun" in request.GET: 104 tmp_day_off_Sun = request.GET.get("day_off_Sun") 105 # 空欄の時は空白に設定 106 if len(tmp_day_off_Sun) > 0: 107 day_off_Sun = tmp_day_off_Sun 108 else: 109 day_off_Sun = "" 110 111 # ウェブサイトのURLを取得 112 if "website" in request.GET: 113 tmp_website = request.GET.get("website") 114 # 空欄の時は空白に設定 115 if len(tmp_website) > 0: 116 website = tmp_website 117 else: 118 website = "" 119 120 # 新規の店舗情報としてインスタンスを作成 121 myinstance = models.ShopInfo.objects.create( 122 name = name, # 店名 123 address = address, # 所在地 124 phonenumber = phonenumber, #電話番号 125 open_time = open, #開店時間 126 close_time = close, #閉店時間 127 day_off_Mon = day_off_Mon, #定休日(月)###エラーはここで出ています。 128 day_off_Tue = day_off_Tue, #(火) 129 day_off_Wed = day_off_Wed, #(水) 130 day_off_Thu = day_off_Thu, #(木) 131 day_off_Fri = day_off_Fri, #(金) 132 day_off_Sat = day_off_Sat, #(土) 133 day_off_Sun = day_off_Sun, #(日) 134 website = website, #ウェブサイト 135 ) 136 137 # 店舗情報をを保存する 138 myinstance.save() 139 140 # オプション設定 141 options = [] 142 143 # 結果出力処理 144 return redirect('/index/') 145
一応index.htmlです。
python
1<div class="createshop" id="create_shop"> 2 <a href=''>お店の新規登録</a> 3 <div class="hidden"> 4 <form method="GET" action="{% url 'search_shop:submitshopinfo' %}" id="shopinfo_form"> 5 {% csrf_token %} 6 <label>店名:<input type="text" name="name"></label></br> 7 <label>所在地:<input type="text" name="address"></label></br> 8 <label>電話番号:<input type="text" name="phonenumber"></label></br> 9 <label>営業時間:<input type="time" name="open">~<input type="time" name="close"></label></br> 10 定休日:<label><input type="checkbox" value="Mon" name='day_off_Mon'>月</label> 11 <label><input type="checkbox" value="Tue" name='day_off_Tue'>火</label> 12 <label><input type="checkbox" value="Wed" name='day_off_Wed'>水</label> 13 <label><input type="checkbox" value="Thu" name='day_off_Thu'>木</label> 14 <label><input type="checkbox" value="Fri" name='day_off_Fri'>金</label> 15 <label><input type="checkbox" value="Sat" name='day_off_Sat'>土</label> 16 <label><input type="checkbox" value="Sun" name='day_off_Sun'>日</label></br> 17 <label>ウェブサイト:<input type="text" name="website"></label></br> 18 19 <label><input type="submit" value="登録"></label> 20 </form> 21 </div> 22 </div>
発生している問題・エラーメッセージ
これらにpython manage.py runserverを実行すると、次のようなエラーが発生しました。
local variable 'day_off_Mon' referenced before assignment
割り当て前にday_off_Monという値が参照されているという内容でした。
day_off_Monだけではなく、day_off_Tueからday_off_Sonまでにも同じ問題が発生していると思われます。
しかし、views.pyのSubmitShopInfoのどこで参照されているかが分かりません。
初歩的なことですが、どなたか解決方法をご教授お願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。