🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Django

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

3回答

1499閲覧

デバッグの方法について

aae_11

総合スコア178

Django

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2019/11/15 01:59

Djangoの公式チュートリアルにて、学習しているのですが、例えばリンク先の以下のようなコードで、「latest_question_list」の中身が知りたかったとします。

from django.shortcuts import render from .models import Question def index(request): latest_question_list = Question.objects.order_by('-pub_date')[:5] context = {'latest_question_list': latest_question_list} return render(request, 'polls/index.html', context)

その際にこちらのコードで、print(latest_question_list」として、出力することはできますが、「127.0.0.1:8000/polls/」などとしてアクセスした際は、既に、テンプレートが呼び出され、処理を途中で止めることが出来ません。
処理を途中でとめ、変数の中身を確認したい際はどうすればよろしいのでしょうか...?

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2019/11/15 03:22

デバッガーでブレイクさせたいのが本質問の主旨だと思うので、トピック程度のコメントですが、 import sys print('message on stderr.', file=sys.stderr) とするとテンプレートに出力するのでもなく、コンソールに標準エラー出力で出力されると思うので、覚えておくと良いと思います。
aae_11

2019/11/15 03:40

ご助言ありがとうございます。 「import sys print('message on stderr.', file=sys.stderr)」 こちらは、デバッグを行いたいファイルに直接書き込むといった感じでしょうか?
dodox86

2019/11/15 04:14 編集

> デバッグを行いたいファイルに直接書き込む import sysが重要ですが、そうなりますね。Djangoのフレームワークを熟知していないところに恐縮ですが、Python/Djangoに限らず、Python/Bottleやその他の言語でも多くのもので標準エラー出力に出力するメッセージが、コンソールやエラー用ログに出されます。
aae_11

2019/11/15 04:34

ご返信ありがとうございます。 勉強になりました。
guest

回答3

0

Visual Studio Codeでもデバッグ出来ますよ。

pythonの環境って結構人によって違うので、自分に合う環境のインストール方法やデバッグ方法をググって探してみてください。
イメージ説明

投稿2019/11/15 03:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aae_11

2019/11/15 04:36

ありがとうございます! 調べて見たいと思います!
aae_11

2019/11/15 07:19

すみません。今、vscodeで試して見たのですが、デバッグモードでは実行するボタンがあり、printした値を出力することが出来るのですが、仮に「127.0.0.1:8000/polls/」などとアドレス入力をした際の変数の遷移の挙動を確認したかった場合はどうすれば良いのでしょうか...?
退会済みユーザー

退会済みユーザー

2019/11/15 07:24

そこは調べて頂かないといけない部分で、ピンポイントで聞かれてもどこまで理解できてるのか分からなくて困るのですが、djangoのデバッグは基本的に ①ブレークポイントを張る ②デバッグ実行する ③ブラウザでURLを入力をして操作する →①で仕掛けたブレークポイントに止まるので、そこから1行ずつステップ実行する という形になります。
aae_11

2019/11/15 09:36

>③ブラウザでURLを入力をして操作する こちら2番までは操作ができたのですが、3番目のやり方が分からない状況でして... 3番目を実行する為には、vscode上にdjangoなどをインストールしターミナル欄で、サーバーを起動する必要があるのでしょうか。。?
退会済みユーザー

退会済みユーザー

2019/11/15 09:40

申し訳ないですが、環境依存の問題をリモートで解決するのはとても大変なので、勘弁してください。 正確な環境の説明とpythonインストールからの正確な操作手順がないと解決しないことが多いです。
guest

0

Spyderと言うIDEが有ります。(anacondaのインストールが要ります・・・たぶんw)
Spyder
【Python】Spyder入門(使い方・デバッグ・変数)

投稿2019/11/15 02:18

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aae_11

2019/11/15 02:30

ご回答ありがとうございます! ご提示いただいた、IDEの使用を検討してみたいと思います!
guest

0

コンソールに出せるなら、printを各所に埋め込んで値を見る、
出せない場合は、なにかログファイルを出すようにして、値を書き込んでいき、あとでファイルの内容を見る。

投稿2019/11/15 02:03

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aae_11

2019/11/15 02:31

>コンソールに出せるなら、printを各所に埋め込んで値を見る、 こちらなのですが、printし、実行しましても既にテンプレートが呼び出された後の表示になってしまう為、printした箇所で処理をストップさせたいのですよね...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問