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

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

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

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

Python 3.x

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

Webサイト

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

Python

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

Q&A

解決済

1回答

1139閲覧

Djangoで複数のアプリを持つ場合に画面表示がうまくいかない問題について

退会済みユーザー

退会済みユーザー

総合スコア0

Django

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

Python 3.x

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

Webサイト

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

Python

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

0グッド

0クリップ

投稿2020/09/26 08:21

編集2020/09/26 14:36

前提・実現したいこと

Djangoで複数のアプリを持つ場合に、アプリを指定して起動しようとしています。
具体的には以下の階層構造を持つ場合に、例えば「blog」アプリを立ち上げようとしたいと言うことです。

サンプルプログラムは、『Djangoビギナーズブック』のサンプルファイルのうち、
7章ブログアプリケーションの作成/helloworld.comを対象としています。

. └── helloworld.com ├── blog │   ├── __init__.py │   ├── ... ├── contact │   ├── __init__.py ├── db.sqlite3 ├── diaries │   ├── __init__.py │   ├── ... ├── manage.py ├── myprofile │   ├── __init__.py │   ├── ... ├── project │   ├── __init__.py │   ├── settings.py │   ├── urls.py │   └── wsgi.py ├── reviews │   ├── __init__.py │   ├── admin.py │   ├── ... └── videos ├── __init__.py   ├── ...

発生している問題・エラーメッセージ

以下のように manage.pyを実行すると、複数あるアプリの内、「myprofile」の内容だけが
http://127.0.0.1:8000/で表示される状態です。

「blog」や「diaries」といった個別のアプリを起動するにはどうすればいいのでしょうか。

$ python manage.py runserver Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). September 26, 2020 - 11:15:00 Django version 3.1.1, using settings 'project.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.

該当のソースコード

manage.py

python

1#!/usr/bin/env python 2"""Django's command-line utility for administrative tasks.""" 3import os 4import sys 5 6 7def main(): 8 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings') 9 try: 10 from django.core.management import execute_from_command_line 11 except ImportError as exc: 12 raise ImportError( 13 "Couldn't import Django. Are you sure it's installed and " 14 "available on your PYTHONPATH environment variable? Did you " 15 "forget to activate a virtual environment?" 16 ) from exc 17 execute_from_command_line(sys.argv) 18 19 20if __name__ == '__main__': 21 main() 22

projectフォルダ内のurls.py

python

1"""project URL Configuration 2 3The `urlpatterns` list routes URLs to views. For more information please see: 4 https://docs.djangoproject.com/en/2.2/topics/http/urls/ 5Examples: 6Function views 7 1. Add an import: from my_app import views 8 2. Add a URL to urlpatterns: path('', views.home, name='home') 9Class-based views 10 1. Add an import: from other_app.views import Home 11 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') 12Including another URLconf 13 1. Import the include() function: from django.urls import include, path 14 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 15""" 16from django.conf import settings 17from django.conf.urls.static import static 18from django.contrib import admin 19from django.urls import path, include 20 21 22urlpatterns = [ 23 path('admin/', admin.site.urls), 24 path('diaries/', include('diaries.urls')), 25 path('reviews/', include('reviews.urls')), 26 path('contact/', include('contact.urls')), 27 path('videos/', include('videos.urls')), 28 path('blog/', include('blog.urls')), 29 path('', include('myprofile.urls')), 30] 31 32urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

試したこと

Djangoのアプリ起動に関してググった中では以下のコマンドしか見つけられず、複数のアプリをプロジェクト内に持つ場合の切り替えについての記事や説明を見つけられていない状態です。

$ python manage.py runserver

補足情報(FW/ツールのバージョンなど)

Django version 3.1.1
Python 3.7.4

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

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

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

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

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

swing_swimming

swing_swimming

2020/09/26 12:50

projectディレクトリ内のurls.pyはどうなっていますか?
退会済みユーザー

退会済みユーザー

2020/09/26 14:36

ご質問ありがとうございます。追記しました。
guest

回答1

0

ベストアンサー

projectのディレクトリ内のurls.pyで「http://127.0.0.1:8000/」以降のURLを表しているかと思います。
今回myprofileが表示されたのはurls.pyを見てもらうとわかる通り、include('myprofile.urls')の「path(」のすぐ右のところが''であり、空白となっています。よって、myprofileが表示されたのだと思います。
include('myprofile.urls')でmyprofileのurls.pyの中の内容を「http://127.0.0.1:8000/(空白)」で開きますよということです。

これを例えば「http://127.0.0.1:8000/blog/」だとblogが表示されるでしょうし、「http://127.0.0.1/8000/diaries/」だとdiariesが表示されるのではないでしょうか。
さらにblogのディレクトリ内のurls.pyに、例えばpath('create/', ◯◯view, name=△△)とか書いてあると、「http://127.0.0.1:8000/blog/create/」になります。

この本を読んだことはないですが、これらのことが本の中にも書いてあるのではないでしょうか。
本の中のサンプルプログラムを書き写しながら、わからないことがあったときに本を読み返してみると、学習が捗りますよ。

投稿2020/09/26 17:30

swing_swimming

swing_swimming

総合スコア54

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問