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

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

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

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

Python

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

AWS(Amazon Web Services)

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

受付中

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

mirukikki
mirukikki

総合スコア6

Django

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

Python

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

AWS(Amazon Web Services)

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

0回答

0リアクション

1クリップ

181閲覧

投稿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

<p class="text">入力された言語は自動判定で適切に翻訳します。 音声合成も言語に合わせて適切に読み上げます。</p> <form method="post" action="/trans/" enctype="multipart/form-data"> <div class="flex_test-box"> <div class="flex_test-item"> <textarea class = "input" name="input_text" rows="25" cols="84" maxlength="5000" placeholder="こちらに翻訳させたい文章を入力してください。">{{input_text}}</textarea> <div class = "translate"> <select name="lang"> {% for lang in lang %} {% if lang.selected %} <option value="{{ loop.index0 }}" selected> {{ lang.display }}</option> {% else %} <option value="{{ loop.index0 }}"> {{ lang.display }}</option> {% endif %} {% endfor %} </select> <input type="submit" name = "send" value="翻訳する"> </div> <div class="file"> <input type="file" name="file" accept=".txt"> <br> <input type="submit" name = "send" value="ファイルを読み込む"class="read"> <p class="string_count">{{input_lengh}}</p> <div id="innerHTMLtxt"></div> </div> </div> <div class="flex_test-item"> <textarea name="output_text" rows="25" cols="84" placeholder="翻訳結果がこちらに表示されます。" readonly>{{output_text}}</textarea> <input type="submit" name="send" value="音声合成"> <input type="submit" name = "send" value="感情分析"> {{sentiment}} <br> <audio src="{{polly}}" controls preload="metadata" class="audio"></audio> <div id="innerHTMLtxt2"></div> </div> </div> </form>

Python

# 直接アクセスした場合もメニューに強制遷移 @app.route('/') def index(): return render_template('menu.html') # メニュー @app.route('/menu/') def trans_menu(): return render_template('menu.html') # パラメータがある場合は、翻訳して表示する @app.route('/trans/', methods=['GET', 'POST']) def trans(): #翻訳 lang = [ {"display": "ドイツ語", "code": "de"}, {"display": "英語", "code": "en"}, {"display": "スペイン語", "code": "es"}, {"display": "フランス語", "code": "fr"}, {"display": "イタリア語", "code": "it"}, {"display": "ポルトガル語", "code": "pt"}, {"display": "日本語", "code": "ja"}, {"display": "韓国語", "code": "ko"}, {"display": "ヒンディー語", "code": "hi"} ] # 読み上げ polly_lang = {"de": "Hans", "en": "Emma", "es": "Lucia", "fr": "Celine", "it": "Giorgio", "pt": "Cristiano", "ja": "Mizuki", "ko": "Seoyeon", "hi": "Aditi"} try: if request.method == 'POST': # リクエストパラメータを読み込む in_text = request.form['input_text'] language = request.form['lang'] #取得したインデックスに対応する辞書の中のcodeで言語コードを取得 targetlanguagecode = lang[int(language)]['code'] #選択された言語のselectedをTrueに lang[int(language)]['selected'] = True #文字数カウント再出力用 in_text_length = in_text.replace( '\n' , '' ) # 値を取得 value = request.form.get('send', None) # 取得した値が翻訳なら if value == "翻訳する": # それぞれ引数を持って翻訳 result = trans_text_ja_2.translate(in_text, targetlanguagecode) # 翻訳済みテキストをグローバル変数で取得 global transretedtext transretedtext = result['TranslatedText'] # 翻訳の結果を返す return render_template('translate.html', input_text=in_text, output_text=transretedtext, lang=lang, input_lengh=f"{len(in_text_length)}/5000") elif value == "音声合成": #viceIDを取得 trget_langcode = polly_lang[targetlanguagecode] # 引数をもって音声ファイル作成 path = speech_synthesis.polly(transretedtext, trget_langcode) # 音声合成の結果を返す return render_template('translate.html', input_text=in_text, output_text=transretedtext, lang=lang, polly=f"../{path}", input_lengh=f"{len(in_text_length)}/5000") elif value == "感情分析": # 分析結果を取得 sentiment = comp_sentiment.sentimentsearch(transretedtext, targetlanguagecode) # 感情分析の結果を返す return render_template('translate.html', input_text=in_text, output_text=transretedtext, lang=lang, polly='', sentiment=f"分析結果:{sentiment['Sentiment']}", input_lengh=f"{len(in_text_length)}/5000") elif value == "ファイルを読み込む": #保存したファイルを読み込んで表示 f = request.files.get('file') filename = secure_filename(f.filename) filepath = f'static/text/{filename}' f.save(filepath) data = "" with open(filepath, 'r', encoding='UTF-8') as f: data = f.read() #結果を返す return render_template('translate.html', input_text=data, output_text='', lang=lang, input_lengh=f"{len(data)}/5000") # 翻訳画面をまっさらで表示 return render_template('translate.html', input_text='', output_text='', lang=lang, input_lengh="0/5000") #すべての例外をキャッチし、エラー画面に飛ばす except Exception: return render_template('error.html')

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

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

該当のソースコード

HTML

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

Python

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

Python

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

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

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/09/27 03:23

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

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に反映させるところからやってみてはどうでしょうか。 さすがに実装の丸投げをここでしても回答を得られる見込みは薄いでしょうし、そこまでいくと本来お金を払ってお願いすべき内容に思えます。 ルーティングしてその先で何かするというのはこういったフレームワークがやりやすくしてくれるものなのでその仕組を理解するほうが先ではないでしょうか。

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

Django

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

Python

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

AWS(Amazon Web Services)

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