【Django】複数のアプリを作成した時に注意すること[Python]

  • URLをコピーしました!
目次

Django

前回までにBMI計算、一次関数グラフ表示、二次関数グラフ表示という3つのアプリを作成してきました。

作成するにあたって、次へ次へと作成してきて、二次関数グラフ表示のアプリまで作ってきたわけですが、ここでちょっと前のWebアプリ(BMI計算、一次関数グラフ表示)を試してみたところ、正常に動かなかったので、今回はその対処をしていきます。

発生した問題

まず発生した問題を確認していきましょう。

こちらが「二次関数グラフ表示」アプリです。

ここから「一次関数グラフ表示」アプリへ移動します。

次に一次関数グラフ表示アプリを実行します。

この際、入力する数字はなんでも構いません。

するとこれまで問題なく動いてたアプリが、その後何か変更を加えたわけでもないのに、エラーが出てくるようになってしまいました。

しかも今、実行しているアプリは「一次関数グラフ表示アプリ」、つまりDjango内のアプリ名で言えば「linearfunction」なのですが、ここでは「quadraticfunction」と何故か「二次関数グラフ表示アプリ」を参照してしまっています。

対処法

いろいろ試した結果、対処法としては、それぞれのアプリのindex.htmlを修正することで、問題を解消することができました。

ということで「linearfunction」のindex.htmlの<!– main –>部分を見てみます。

<!-- main -->
        <div class="col-sm-9" style="text-align: center; margin:2rem 0rem 2rem 0rem;">
            <form action="{% url 'index' %}" method="post">
                {% csrf_token %}
                <table style="margin-left:auto; margin-right:auto;">
                <tr><td style="text-align: right;">{{ forms.a.label}}:</td><td>{{ forms.a }}</td><td style="text-align: right;">{{ forms.b.label }}:</td><td>{{ forms.b }}</td></tr>
                <tr><td style="text-align: right;">{{ forms.xmax.label }}:</td><td>{{ forms.xmax }}</td><td style="text-align: right;">{{ forms.xmin.label }}:</td><td>{{ forms.xmin }}</td></tr>
                <tr><td style="text-align: right;">{{ forms.ymax.label }}:</td><td>{{ forms.ymax }}</td><td style="text-align: right;">{{ forms.ymin.label }}:</td><td>{{ forms.ymin }}</td></tr>
                <tr><td></td><td></td><td></td><td style="text-align: right;"><input type='submit' value="click"></td></tr>
                </table>
            </form>
            <img src="{% static 'linearfunction/linearfunction.png' %}">
        </div>
        <!-- /main -->

修正するのはこちらの箇所。

<form action="{% url 'index' %}" method="post">

この中の「action=”{% url ‘index’ %}”」がどうやら/webapp/webapp/urls.pyの一番最後のパス、つまり現状では「quadraticfunction/」を指し示してしまうようです。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('bmiapp/', include('bmiapp.urls')),
    path('linearfunction/', include('linearfunction.urls')),
    path('quadraticfunction/', include('quadraticfunction.urls')),
]

ということで「action=””」には、直接アプリ名を指定することにしました。

<form action="/linearfunction/" method="post">

これで確認したところ、問題なく実行することができました。

「BMI計算アプリ」や「二次関数グラフ表示アプリ」の場合は、それぞれこうなります。

<form action="/bmiapp/" method="post">
<form action="/quadraticfunction/" method="post">

問題なく動いていたアプリが突然動かなくなったと焦りましたが、なんとか対処できました。

次回は二次関数グラフ表示アプリの数式の二乗の「2」が上付きになっていない問題を解消していきます。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次