質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

解決済

エラー:「local variable '○○' referenced before assignment」の解決方法

harug
harug

総合スコア4

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

2回答

0評価

0クリップ

492閲覧

投稿2021/11/28 19:39

前提・実現したいこと

Django上でWebアプリを作成しています。

「新規店舗の情報を記載して、登録ボタンで店舗登録を行う」機能を実装中に以下のエラーが発生しました。

以下は、エラーの原因とされる部分のみ記載しています。

該当のソースコード

まずはmodels.pyです。

python

class ShopInfo(models.Model): name = models.CharField(max_length=100, null=False, blank=False) address = models.CharField(max_length=100, null=False, blank=False) phonenumber = models.CharField(max_length=100, null=False, blank=False) now_time = models.DateTimeField(verbose_name= '現在時刻', default=timezone.now) open_time = models.DateTimeField(verbose_name= '開店時刻', default=timezone.now) close_time = models.DateTimeField(verbose_name= '閉店時刻', default=timezone.now) day_off_Mon = models.CharField(max_length=10, null=False, blank=False) day_off_Tue = models.CharField(max_length=10, null=False, blank=False) day_off_Wed = models.CharField(max_length=10, null=False, blank=False) day_off_Thu = models.CharField(max_length=10, null=False, blank=False) day_off_Fri = models.CharField(max_length=10, null=False, blank=False) day_off_Sat = models.CharField(max_length=10, null=False, blank=False) day_off_Sun = models.CharField(max_length=10, null=False, blank=False) website = models.URLField() def __str__(self): 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 return ret

次にviews.pyです。
実際にエラーに関わる部分は下のインスタンス生成のところです。

python

def SubmitShopInfo(request): # 名前を取得 if "name" in request.GET: tmp_name = request.GET.get("name") # 空欄の時は空白に設定 if len(tmp_name) > 0: name = tmp_name else: name = "" # 所在地を取得 if "address" in request.GET: tmp_address = request.GET.get("address") # 空欄の時は空白に設定 if len(tmp_address) > 0: address = tmp_address else: address = "" # 電話番号を取得 if "phonenumber" in request.GET: tmp_phonenumber = request.GET.get("phonenumber") # 空欄の時は空白に設定 if len(tmp_phonenumber) > 0: phonenumber = tmp_phonenumber else: phonenumber = "" # 開店時間を取得 if "open" in request.GET: tmp_open = request.GET.get("open") # 空欄の時は空白に設定 if len(tmp_open) > 0: open = tmp_open else: open = "" # 閉店時間を取得 if "close" in request.GET: tmp_close = request.GET.get("close") # 空欄の時は空白に設定 if len(tmp_close) > 0: close = tmp_close else: close = "" # 定休日を取得(月) if "day_off_Mon" in request.GET: tmp_day_off_Mon = request.GET.get("day_off_Mon") # 空欄の時は空白に設定 if len(tmp_day_off_Mon) > 0: day_off_Mon = tmp_day_off_Mon else: day_off_Mon = "" # 定休日を取得(火) if "day_off_Tue" in request.GET: tmp_day_off_Tue = request.GET.get("day_off_Tue") # 空欄の時は空白に設定 if len(tmp_day_off_Tue) > 0: # global day_off_Tue day_off_Tue = tmp_day_off_Tue else: day_off_Tue = "" # 定休日を取得(水) if "day_off_Wed" in request.GET: tmp_day_off_Wed = request.GET.get("day_off_Wed") # 空欄の時は空白に設定 if len(tmp_day_off_Wed) > 0: day_off_Wed = tmp_day_off_Wed else: day_off_Wed = "" # 定休日を取得(木) if "day_off_Thu" in request.GET: tmp_day_off_Thu = request.GET.get("day_off_Thu") # 空欄の時は空白に設定 if len(tmp_day_off_Thu) > 0: day_off_Thu = tmp_day_off_Thu else: day_off_Thu = "" # 定休日を取得(金) if "day_off_Fri" in request.GET: tmp_day_off_Fri = request.GET.get("day_off_Fri") # 空欄の時は空白に設定 if len(tmp_day_off_Fri) > 0: day_off_Fri = tmp_day_off_Fri else: day_off_Fri = "" # 定休日を取得(土) if "day_off_Sat" in request.GET: tmp_day_off_Sat = request.GET.get("day_off_Sat") # 空欄の時は空白に設定 if len(tmp_day_off_Sat) > 0: day_off_Sat = tmp_day_off_Sat else: day_off_Sat = "" # 定休日を取得(日) if "day_off_Sun" in request.GET: tmp_day_off_Sun = request.GET.get("day_off_Sun") # 空欄の時は空白に設定 if len(tmp_day_off_Sun) > 0: day_off_Sun = tmp_day_off_Sun else: day_off_Sun = "" # ウェブサイトのURLを取得 if "website" in request.GET: tmp_website = request.GET.get("website") # 空欄の時は空白に設定 if len(tmp_website) > 0: website = tmp_website else: website = "" # 新規の店舗情報としてインスタンスを作成 myinstance = models.ShopInfo.objects.create( name = name, # 店名 address = address, # 所在地 phonenumber = phonenumber, #電話番号 open_time = open, #開店時間 close_time = close, #閉店時間 day_off_Mon = day_off_Mon, #定休日(月)###エラーはここで出ています。 day_off_Tue = day_off_Tue, #(火) day_off_Wed = day_off_Wed, #(水) day_off_Thu = day_off_Thu, #(木) day_off_Fri = day_off_Fri, #(金) day_off_Sat = day_off_Sat, #(土) day_off_Sun = day_off_Sun, #(日) website = website, #ウェブサイト ) # 店舗情報をを保存する myinstance.save() # オプション設定 options = [] # 結果出力処理 return redirect('/index/')

一応index.htmlです。

python

<div class="createshop" id="create_shop"> <a href=''>お店の新規登録</a> <div class="hidden"> <form method="GET" action="{% url 'search_shop:submitshopinfo' %}" id="shopinfo_form"> {% csrf_token %} <label>店名:<input type="text" name="name"></label></br> <label>所在地:<input type="text" name="address"></label></br> <label>電話番号:<input type="text" name="phonenumber"></label></br> <label>営業時間:<input type="time" name="open"><input type="time" name="close"></label></br> 定休日:<label><input type="checkbox" value="Mon" name='day_off_Mon'></label>                <label><input type="checkbox" value="Tue" name='day_off_Tue'></label>                <label><input type="checkbox" value="Wed" name='day_off_Wed'></label>                <label><input type="checkbox" value="Thu" name='day_off_Thu'></label>                <label><input type="checkbox" value="Fri" name='day_off_Fri'></label>                <label><input type="checkbox" value="Sat" name='day_off_Sat'></label>                <label><input type="checkbox" value="Sun" name='day_off_Sun'></label></br> <label>ウェブサイト:<input type="text" name="website"></label></br> <label><input type="submit" value="登録"></label> </form> </div> </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のどこで参照されているかが分かりません。
初歩的なことですが、どなたか解決方法をご教授お願い致します。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。