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

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

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

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

Python 3.x

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

Q&A

解決済

1回答

1990閲覧

DjangoのModels,Views,Templatesの関係と処理について

Udomomo

総合スコア1524

Django

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

Python 3.x

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

0グッド

0クリップ

投稿2016/12/29 11:28

DjangoでWebアプリケーションを作っています。
作りたい機能は、ユーザが入力したURLについて、そこにアクセスしたときにリダイレクトが起きるかを判定するものです。
判定にはRequestsやBeautifulSoupなどを使って、サーバーリダイレクトやmeta refreshによるリダイレクトを検知するという仕組みにしようと思っています。

今はコーディングを始めたところですが、Models,Views,Templatesをどう作るべきか、以下の2つの点で悩んでいます。

●このWebアプリケーションはデータベースを使わなくても成立するのですが、上記のRequestsなどの処理を書くのは、Views.pyとModels.pyのどちらであるべきでしょうか?
Models.pyはデータベースを操作するためのものなので、作らなくても良いのではと考えていますが、それで正しいでしょうか。

●TemplatesからViewsに、入力した文字列を渡すにはどうすれば良いでしょうか?上記の簡易版の場合、入力したURLをViews.pyに渡す必要があると考えていますが、どうやるべきかが思いつきません。

とても初歩的な質問ですが、よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

お邪魔します。

●このWebアプリケーションはデータベースを使わなくても成立するのですが、上記のRequestsなどの処理を書くのは、Views.pyとModels.pyのどちらであるべきでしょうか?

Models.pyはデータベースを操作するためのものなので、作らなくても良いのではと考えていますが、それで正しいでしょうか。

レイヤーとしてはviewでよいです。
質問者さんのおっしゃる通りで、models.pyには(データベース操作のための)モデルロジックを記載するという認識で正しいと思います。

●TemplatesからViewsに、入力した文字列を渡すにはどうすれば良いでしょうか?上記の簡易版の場合、入力したURLをViews.pyに渡す必要があると考えていますが、どうやるべきかが思いつきません。

まず、基本的な仕組みの話になりますが、Templatesはあくまで、htmlやxml、yaml、jsonなどなどのクライアントからのrequestに対応するコンテンツを生成するための仕組みなので、Templatesからviewに何かを渡すという発想は根本的な部分を誤解している恐れがあります。
テンプレート言語を使って生成したhtmlなどのコンテンツを表示しているブラウザから送信された入力内容を、viewが受け取るのであることをご理解いただけると習得や理解が早くなると思います。

で、具体的にですが、
①urlは入力欄を表示してそこにユーザが入力する
②ユーザが入力した内容を、例えばボタン押下などのイベントでサーバ側に提出(submit)
③サーバ側で入力内容を受け取り、処理して結果を表示する
というような流れをお考えですか?
であれば、postやgetで提出された内容を取り出せればよいわけですね。

かなり基本的なところなので、「django post データ取得」、「django get データ取得」などのキーワードでgoogle検索をすると沢山記事が出てきます。

例えば、以下のような記事の内容でやりたいことが実現できるのではないでしょうか。

DjangoによるWebアプリケーション開発入門 - 画面からデータを受け取ろう

DJangoメモ:はじめから(フォーム処理)

もしリンクの内容を読んでもよくわからないということであれば、またコメント欄や質問内容への追記でお知らせください。
その際、できればご使用の環境、djangoの使用バージョンなど追記いただければ幸いです。

以上です。

投稿2016/12/29 14:56

編集2016/12/29 14:58
ShinpeiYamamoto

総合スコア540

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

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

Udomomo

2017/01/01 07:28

ありがとうございます。紹介いただいたサイトのうち、「DjangoによるWebアプリケーション開発入門」がとてもわかりやすく、Djangoの仕組みについての理解が大いに深まりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問