2017-02-27 7 views
0

リンク先のチュートリアルに従うことで、ページのタイトルのように、私はGetting Started with Tastypieです。しかし、私は/api/entry/?format=jsonをロードしようとすると、私はこのエラーメッセージで、HTTP 500応答を取得:Tastypie入門:そのようなテーブルはありません:myapp_entry

いいえ、そのようなテーブル:私はsqlite3の中で見てみるとmyapp_entry

は、確かに、そのようなテーブルはありません。ここで

は、私は、チュートリアル続い方法は次のとおりです。私は/を作成し

 
$ django-admin startproject mysite 
$ cd mysite 
$ django-admin startapp myapp 

をチュートリアルで指定されているようmyapp/models.pymyapp/api.pymysite/urls.pyを編集し、そしてmysite/settings.pyの私INSTALLED_APPSに「tastypie」を追加しました。

注:それはurls.py編集または作成するファイル私には明確ではなかったので、私はmysiteで既存のものを編集しました。 「myapp.urls」という名前のモジュール:だから今、それは次のようになります。それはエラーはImportErrorが発生したため

from django.conf.urls import url, include 
from myapp.api import EntryResource 
from django.contrib import admin 

entry_resource = EntryResource() 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
# url(r'^blog/', include('myapp.urls')), 
    url(r'^api/', include(entry_resource.urls)), 
] 

私は、「ブログ」行をコメントアウト。私はこれが私がうんざりしているステップだと思うが、myapp/urls.pyにチュートリアルコードを入れようとしたときに、ページをロードしようとしたときに404が得られ、url(r'^blog/', include('myapp.urls'))mysite/urls.pyに追加しようとしたとき、 。だから私は上記のコードに戻りました。

明確にするために、ここに私のファイル構造は、今のようになります:

 
$ find . -type f -not -name '*.pyc' 
./manage.py 
./myapp/__init__.py 
./myapp/views.py 
./myapp/models.py 
./myapp/tests.py 
./myapp/admin.py 
./myapp/apps.py 
./myapp/migrations/__init__.py 
./myapp/api.py 
./db.sqlite3 
./mysite/__init__.py 
./mysite/settings.py 
./mysite/urls.py 
./mysite/wsgi.py 

私が作った一つの他の変更は私のEntryクラスにMetaサブクラスを追加したので、最初の十行は次のようになります。

私はそれをしない場合は
class Entry(models.Model): 
    user = models.ForeignKey(User) 
    pub_date = models.DateTimeField(default=now) 
    title = models.CharField(max_length=200) 
    slug = models.SlugField(null=True, blank=True) 
    body = models.TextField() 

    class Meta: 
     app_label = 'myapp' 

    # __unicode__() and save() as in the tutorial 

、私はコンソールでこれを取得する:のRuntimeError:Modelクラスのmyapp.models.Entryは、明示的なapp_labelを宣言しないとINSTALLED_APPSにあるアプリケーションではありませんありません。

私が試した別のことはpython manage.py migrateでした。それは何かすることを見つけましたが、これはこのエラーを修正していません。

ここで(requirements.txt/virtualenvで)私がインストールされてしまったものだ:

  • ジャンゴ(1.10)
  • ジャンゴ - tastypie(0.13.3)
  • PyYAMLと(3.12)
  • はmysqlclient (1.3.10)(まだ実際にはセットアップしていませんが、現在はデフォルトのsqlite3セットアップを使用しています)

私はPython 3.4.3を実行していますが、Python 2.7.6ではまったく同じ設定を使用して同じエラーが発生しました。

は最後に、ここでそのHTTP 500ページからの完全なスタックトレースです:

 
{"error_message": "no such table: myapp_entry", "traceback": "Traceback (most recent call last): 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/django/db/backends/sqlite3/base.py", line 337, in execute 
    return Database.Cursor.execute(self, query, params) 
sqlite3.OperationalError: no such table: myapp_entry 

The above exception was the direct cause of the following exception: 

Traceback (most recent call last): 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/tastypie/resources.py", line 219, in wrapper 
    response = callback(request, *args, **kwargs) 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/tastypie/resources.py", line 450, in dispatch_list 
    return self.dispatch('list', request, **kwargs) 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/tastypie/resources.py", line 482, in dispatch 
    response = method(request, **kwargs) 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/tastypie/resources.py", line 1335, in get_list 
    to_be_serialized = paginator.page() 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/tastypie/paginator.py", line 194, in page 
    count = self.get_count() 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/tastypie/paginator.py", line 126, in get_count 
    return self.objects.count() 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/django/db/models/query.py", line 369, in count 
    return self.query.get_count(using=self.db) 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/django/db/models/sql/query.py", line 476, in get_count 
    number = obj.get_aggregation(using, ['__count'])['__count'] 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/django/db/models/sql/query.py", line 457, in get_aggregation 
    result = compiler.execute_sql(SINGLE) 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 835, in execute_sql 
    cursor.execute(sql, params) 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/django/db/backends/utils.py", line 79, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/django/db/utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/django/utils/six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "~/myproject/virtualenv/lib/python3.4/site-packages/django/db/backends/sqlite3/base.py", line 337, in execute 
    return Database.Cursor.execute(self, query, params) 
django.db.utils.OperationalError: no such table: myapp_entry 
"} 

誰も私が間違ってやっているかを見ることができますか?または、チュートリアルはこれらのバージョンには適用されませんか? 1については

答えて

2

sqlite3.OperationalError: no such table: myapp_entry

、あなたのプロジェクトはSQLiteのではなく、MySQLを使用しています。 DATABASESの設定を更新する必要があります。

プロジェクト設定でINSTALLED_APPSmyappを追加してください。

、実行./manage.py migrate。修正後、INSTALLED_APPS DjangoはアプリのEntryモデルを見つけてそのテーブルを作成できるはずです。

+0

'DATABASES'は正しく設定されています。はい、' myapp'を 'INSTALLED_APPS'に追加することで問題は解決しました。私はそれがそんなに愚かなものかもしれないと思った。ありがとう。 –

関連する問題