2012-01-22 61 views
2

私はDjangoプロジェクトのチュートリアルを進めています。DjangoでこれらのPythonエラーを解決するには?

私はこれまでのところ、https://docs.djangoproject.com/en/1.3/intro/tutorial02/#s-make-the-poll-app-modifiable-in-the-adminとしましたが、いくつかのファイルにエラーがあります。 admin.pyファイルに:

from polls.models import Poll 
from django.contrib import admin 

admin.site.register(Poll) 

私は、チュートリアルで説明したようなモデルが定義されている

Unresolved import: Poll 

エラー取得しています:

import datetime 

from django.db import models 

class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 
    def __unicode__(self): 
     return self.question 
    def was_published_today(self): 
     return self.pub_date.date() == datetime.date.today() 

class Choice(models.Model): 
    poll = models.ForeignKey(Poll) 
    choice = models.CharField(max_length=200) 
    votes = models.IntegerField() 
    def __unicode__(self): 
     return self.choice 

チュートリアル状態をするときことをI管理ファイルを追加した後にサーバーを再起動すると、管理ページの127.0.0.1:8000で参照される投票アプリケーションが表示されるはずですが、表示されるのは次のとおりです。

Model admin without registered models

私も

Unresolved import: Poll admin.py /newProj/src/newProj/polls line 0 PyDev Problem 
Unresolved import: settings manage.py /firstproject/firstproject line 10 PyDev Problem 
Unresolved import: settings manage.py /newProj/src/newProj line 10 PyDev 

を見ているエラーは、私が投票アプリで更新サイトの管理ページを見られない理由はありますか?

これらのエラーを解決するにはどうすればよいですか?

+0

http://klaith.wordpress.com/2009/06/12/pydev-unresolved-import-errors/ – dm03514

+0

これらは、PyDevはエラーではなく、エラーをPythonのです。あなたのIDEのように聞こえるようになっている。 –

答えて

1

であなたは、インポート処理に抽象化の層を追加PyDevはを使用しています。

ライトテキストエディタとコンソールを使用して学習します。 Python Pathとインポートロジックが頭の中で十分に明確になったら、IDEに切り替えてPydevを自分で設定することができます。

2

/newProj/src/newProj/pollsと... eeek、これはいくつかの問題の原因のように正直なようです。 OK、いくつかのコンセプト:

Pythonパッケージ:すべてのpythonアプリケーションはパッケージで構成できます。これらは基本的には__init__.pyファイルを含むディレクトリです。それは、パッケージを探すときまあ、Pythonは2つのいずれかの操作を行うことができます:Pythonはパッケージ見つける方法

  • を、現在のディレクトリがパッケージである場合に、すなわち__init__.pyが含まれ、それが内のファイルからインポートすることができますそれ。
  • これはpythonパス(PYTHONPATH環境変数、またはsys.path - 同じもの)を検索し、次にサブパッケージにします。をレイアウトされてどのようにDjangoのプロジェクト

:デフォルトのDjangoのプロジェクトは、このようなものになります。

    :このレイアウトで

    project_folder/ 
        __init__.py 
        settings.py  # config 
        urls.py   # url config 
        polls/ 
         __init__.py # makes polls a package 
         models.py # models 
         admin.py  # admin 
         views.py  # app views 
         forms.py  # per app forms 
         urls.py  # per app urls 
    

    を、あなたのadmin.pyときrunserverための2つの可能性があります

  • from models import Poll - これはあなたがあなたのパッケージの範囲内にとどまっているために機能します。
  • from polls.models import Poll - pollsはパッケージなので、あなたが実行している場所の親もrunserverです。

魅力的ですが、project_folderをパッケージとして使用しないでください。 dirの名前を変更するとすぐにコードが破損します(たとえば、デプロイ中)。心の中のすべてのものとそう

、:

  • は、あなたの__init__.pyファイルが適切な場所に存在し、あなたがちょっと上のようなディレクトリ構造を使用していることを確認してください。 IDEの外でもチェックするのが最善です - IDEは難しいかもしれません。
  • あなたのパスがどこにあるかを調べていることを確認してください。現在のディレクトリはうまくいくはずです。そうでない場合、あなたは

    import sys 
    print sys.path 
    

    を見ることができ、あなたが探している場所を表示することができます。現在のディレクトリを明示的に追加することはできますが、必要はありません。

  • 私はPyDevが嫌いです。個人的には個人的には好きですが、通常のエディタ+端末+ファイルブラウザの上では難しい作業です。 IDEを使用していると思っているものと比べて、ディレクトリ構造がファイルブラウザで根本的に異なることがわかっている場合は特にそうかもしれません。
0

これを試してみてください。

import newProj.poll.models 
+0

これは有効なpythonではなく、 'SyntaxError'を与えます。 –

関連する問題