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

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

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

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

Python

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

0回答

355閲覧

もともと作成していたAWSを用いたサービスを Djangoで動作させたいです。

mirukikki

総合スコア9

Django

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

Python

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2022/09/25 02:42

前提

ここに質問の内容を詳しく書いてください。
もともと作成していたAWSを用いたサービスを
Djangoで動作させたいです。

こちらのソースコードがもともと作成していたものになります。
Amazon Translateを用いた翻訳サービスになります。
Pythonの法のコードがルーティングを管理する「menu.py」で、
そのほかにも「comp_sentiment.py」、「speech_synthesis.py」、「trans_text_ja_2.py」
とクラス化させて「menu.py」から利用いています。
HTML側からpostで送信された時のvalueの値で判定させてHTMLに結果を都度都度
返している感じです。

HTML

1<p class="text">入力された言語は自動判定で適切に翻訳します。 音声合成も言語に合わせて適切に読み上げます。</p> 2 <form method="post" action="/trans/" enctype="multipart/form-data"> 3 <div class="flex_test-box"> 4 <div class="flex_test-item"> 5 <textarea class = "input" name="input_text" rows="25" cols="84" maxlength="5000" placeholder="こちらに翻訳させたい文章を入力してください。">{{input_text}}</textarea> 6 <div class = "translate"> 7 <select name="lang"> 8 {% for lang in lang %} 9 {% if lang.selected %} 10 <option value="{{ loop.index0 }}" selected> {{ lang.display }}</option> 11 {% else %} 12 <option value="{{ loop.index0 }}"> {{ lang.display }}</option> 13 {% endif %} 14 {% endfor %} 15 </select> 16 <input type="submit" name = "send" value="翻訳する"> 17 </div> 18 <div class="file"> 19 <input type="file" name="file" accept=".txt"> 20 <br> 21 <input type="submit" name = "send" value="ファイルを読み込む"class="read"> 22 <p class="string_count">{{input_lengh}}</p> 23 <div id="innerHTMLtxt"></div> 24 </div> 25 </div> 26 <div class="flex_test-item"> 27 <textarea name="output_text" rows="25" cols="84" placeholder="翻訳結果がこちらに表示されます。" readonly>{{output_text}}</textarea> 28 <input type="submit" name="send" value="音声合成"> 29 <input type="submit" name = "send" value="感情分析"> 30 {{sentiment}} 31 <br> 32 <audio src="{{polly}}" controls preload="metadata" class="audio"></audio> 33 <div id="innerHTMLtxt2"></div> 34 </div> 35 </div> 36 </form>

Python

1# 直接アクセスした場合もメニューに強制遷移 2@app.route('/') 3def index(): 4 return render_template('menu.html') 5 6# メニュー 7@app.route('/menu/') 8def trans_menu(): 9 return render_template('menu.html') 10 11# パラメータがある場合は、翻訳して表示する 12@app.route('/trans/', methods=['GET', 'POST']) 13def trans(): 14 #翻訳 15 lang = [ 16 {"display": "ドイツ語", "code": "de"}, 17 {"display": "英語", "code": "en"}, 18 {"display": "スペイン語", "code": "es"}, 19 {"display": "フランス語", "code": "fr"}, 20 {"display": "イタリア語", "code": "it"}, 21 {"display": "ポルトガル語", "code": "pt"}, 22 {"display": "日本語", "code": "ja"}, 23 {"display": "韓国語", "code": "ko"}, 24 {"display": "ヒンディー語", "code": "hi"} 25 ] 26 # 読み上げ 27 polly_lang = {"de": "Hans", "en": "Emma", "es": "Lucia", "fr": "Celine", 28 "it": "Giorgio", "pt": "Cristiano", "ja": "Mizuki", "ko": "Seoyeon", "hi": "Aditi"} 29 try: 30 if request.method == 'POST': 31 # リクエストパラメータを読み込む 32 in_text = request.form['input_text'] 33 language = request.form['lang'] 34 35 #取得したインデックスに対応する辞書の中のcodeで言語コードを取得 36 targetlanguagecode = lang[int(language)]['code'] 37 38 #選択された言語のselectedをTrueに 39 lang[int(language)]['selected'] = True 40 41 #文字数カウント再出力用 42 in_text_length = in_text.replace( '\n' , '' ) 43 44 # 値を取得 45 value = request.form.get('send', None) 46 47 # 取得した値が翻訳なら 48 if value == "翻訳する": 49 # それぞれ引数を持って翻訳 50 result = trans_text_ja_2.translate(in_text, targetlanguagecode) 51 52 # 翻訳済みテキストをグローバル変数で取得 53 global transretedtext 54 transretedtext = result['TranslatedText'] 55 56 # 翻訳の結果を返す 57 return render_template('translate.html', 58 input_text=in_text, 59 output_text=transretedtext, 60 lang=lang, 61 input_lengh=f"{len(in_text_length)}/5000") 62 63 elif value == "音声合成": 64 65 #viceIDを取得 66 trget_langcode = polly_lang[targetlanguagecode] 67 68 # 引数をもって音声ファイル作成 69 path = speech_synthesis.polly(transretedtext, trget_langcode) 70 71 # 音声合成の結果を返す 72 return render_template('translate.html', 73 input_text=in_text, 74 output_text=transretedtext, 75 lang=lang, polly=f"../{path}", 76 input_lengh=f"{len(in_text_length)}/5000") 77 78 elif value == "感情分析": 79 80 # 分析結果を取得 81 sentiment = comp_sentiment.sentimentsearch(transretedtext, targetlanguagecode) 82 83 # 感情分析の結果を返す 84 return render_template('translate.html', 85 input_text=in_text, 86 output_text=transretedtext, 87 lang=lang, 88 polly='', 89 sentiment=f"分析結果:{sentiment['Sentiment']}", 90 input_lengh=f"{len(in_text_length)}/5000") 91 92 elif value == "ファイルを読み込む": 93 94 #保存したファイルを読み込んで表示 95 f = request.files.get('file') 96 filename = secure_filename(f.filename) 97 filepath = f'static/text/{filename}' 98 f.save(filepath) 99 data = "" 100 with open(filepath, 'r', encoding='UTF-8') as f: 101 data = f.read() 102 103 #結果を返す 104 return render_template('translate.html', 105 input_text=data, 106 output_text='', 107 lang=lang, 108 input_lengh=f"{len(data)}/5000") 109 110 # 翻訳画面をまっさらで表示 111 return render_template('translate.html', 112 input_text='', 113 output_text='', 114 lang=lang, 115 input_lengh="0/5000") 116 117 #すべての例外をキャッチし、エラー画面に飛ばす 118 except Exception: 119 return render_template('error.html')

ここに実現したいことを箇条書きで書いてください。

これらのサービスをDjango上で動かしたいのですが、menu.pyの処理を
どのようにして実装すればいいのかよくわかりません。
ひとまずはHTMLを表示させてみたのですが、pythonとの連携の部分が全然わかりません。
views.pyのところにmenu.pyの処理を記述してrenderすればいいのかと思って
試したんですけどさっぱりです><

該当のソースコード

HTML

1<a class="btn btn-border-shadow btn-border-shadow--color2" href="{% url 'AI:trans' %}" role="button">翻訳へ</a>

Python

1#urls.py 2urlpatterns = [ 3 path('', views.IndexView.as_view(), name="index"), 4 path('trans/', views.trans, name='trans'), 5]

Python

1#views.py 2#ここにmenu.pyの内容を書いてみました。 3class IndexView(generic.TemplateView): 4 template_name = "menu.html" 5def trans(request): 6#翻訳 7 lang = [ 8 {"display": "ドイツ語", "code": "de"}, 9 {"display": "英語", "code": "en"}, 10 {"display": "スペイン語", "code": "es"}, 11 {"display": "フランス語", "code": "fr"}, 12 {"display": "イタリア語", "code": "it"}, 13 {"display": "ポルトガル語", "code": "pt"}, 14 {"display": "日本語", "code": "ja"}, 15 {"display": "韓国語", "code": "ko"}, 16 {"display": "ヒンディー語", "code": "hi"} 17 ] 18 # 読み上げ 19 polly_lang = {"de": "Hans", "en": "Emma", "es": "Lucia", "fr": "Celine", 20 "it": "Giorgio", "pt": "Cristiano", "ja": "Mizuki", "ko": "Seoyeon", "hi": "Aditi"} 21 try: 22 if value == "翻訳する": 23 # それぞれ引数を持って翻訳 24 result = trans_text_ja_2.translate(in_text, targetlanguagecode) 25 26 # 翻訳済みテキストをグローバル変数で取得 27 global transretedtext 28 transretedtext = result['TranslatedText'] 29 30 # 翻訳の結果を返す 31 return render(request, 'trans.html', 32 input_text=in_text, 33 output_text=transretedtext, 34 lang=lang, 35 input_lengh=f"{len(in_text_length)}/5000") 36#こんな感じでそのままコピーしただけなんですけど。。 37#やっぱりうまくいきません。

よろしくお願いしますm()mm()m

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

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

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

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

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

tamanegine

2022/09/26 01:41

AWSのどのサービスを使いたいのか、またはコストは一番安くできる構築方法にしたいとか多少お金使っても良いので何も考えずすぐに構築できるようなサービスを使いたいのか、ソースコードになるべく手を入れたくないかで回答が変わってきます。 AWSでPythonのアプリケーションを実行するには以下の候補があるかと思います Amazon EC2 Amazon ECS + Fargate Amazon Lightsail AWS Lambda AWS App Runner 今後AWSでしか使わないならAWS Lambda、他のクラウドサービスやオンプレに移行する可能性があるならば、多少お金はかかりますがApp Runnerがおすすめです
yu_1985

2022/09/27 03:28

これはAWS上のどこで動かすかが質問の主題ではなく、単に既存のPythonコードをDjangoに移植したもののうまく動かないのでデバッグをしたいという話ではないでしょうか。 既存のコードのことは一旦忘れ、まずはDjangoが処理した内容を何でもいいからviewに反映させるところからやってみてはどうでしょうか。 さすがに実装の丸投げをここでしても回答を得られる見込みは薄いでしょうし、そこまでいくと本来お金を払ってお願いすべき内容に思えます。 ルーティングしてその先で何かするというのはこういったフレームワークがやりやすくしてくれるものなのでその仕組を理解するほうが先ではないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問