0

私はDjangoアプリを作成していて、現在本番環境にいます。私はこの問題を抱えています:manage.py syncdbを実行した後(それはすべて大丈夫です)私はadminに入り、モデルテーブルを見つけることができません。私のadmin.pyファイルが存在し、これは私のファイルurl.pyです:

from django.conf.urls.defaults import patterns, include, url
from django.contrib import admin
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'stambol.views.home', name='home'),
    # url(r'^stambol/', include('stambol.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
)

問題はどこだ?

4

3 に答える 3

0
from django import admin
from example.models import YourModel

admin.site.register(YourModel) 
# or

class ModelAdmin(admin.ModelAdmin):
    pass

admin.site.register(YourModel, YourModelAdmin)

これはトリックを行う必要があります

于 2012-10-27T16:12:25.000 に答える
0

権限

まず、不足しているモデルを編集する権限があることを確認してください。スーパーユーザー アカウントを使用して開発し、別の非スーパーユーザー アカウントを使用して本番環境の展開をテストするのが一般的です。少なくとも読み取り権限がない場合、クラスは管理画面にまったく表示されません。

これが一番ありそうな原因だと思いますが、あとは書いてしまったので置いておきます。

管理者登録の検出:

runserver と運用サーバーの大きな違いの 1 つは、実行時にrunserverすべてのmodels.pyファイルがインポートされ、モデルが検証されることです。これは本番環境では発生しないため、モデルを内部の管理者に登録する場合はmodels.py、コードが実行されるようにそのファイルをインポートする必要があります。メインの URL conf で行うことができます。

望ましい解決策は、アプリごとのadmin.pyファイルで登録を行い、 によって取得されるようにすることautodiscoverです。

設定:

@Pratikが言うように、インストールされたアプリにリストされている管理者が必要です。ここで述べたように、いくつかの依存関係もあります。インストールされたアプリには、少なくとも次のものが含まれている必要があります。

INSTALLED_APPS = [
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions'
    'django.contrib.messages',
    'django.contrib.admin',
    #...
    'myapp',
    #...
]

アプリを含むディレクトリがmyapppython パスにあることを確認myappしてくださいautodiscover。これはすでに正しく機能していますImportError: No module named myapp

サーバーの再起動:

最後に、コメントの奥深くに埋もれている内容を要約すると、コードを変更した後、wsgi ファイルに触れることで本番サーバーを再起動できますtouch wsgi.py。これを行うときは、タブ補完を使用して、既存の wsgi ファイルに触れていることを確認し、タイプミスなどのために新しいファイルを作成しないようにします。触れている wsgi ファイルには、次のようなものが含まれている必要があります。

...

# tell django to find settings at APPS_DIR/mainsite/settings.py'
os.environ['DJANGO_SETTINGS_MODULE'] = 'mainsite.settings'

# hand off to the wsgi application
application = WSGIHandler()

まだ壊れていますか?

それでも期待どおりに動作しない場合は、既成概念にとらわれずに考えてください。あなたは本番環境に慣れていないことを念頭に置いて、あなた自身のコード以外のコードが提供されている可能性はありますか? フロントエンド ページに明らかな変更を加え、サーバーを再起動して、機能するかどうかを確認します。もちろん、これは暗闇の中でのショットです。

于 2012-10-28T20:24:09.627 に答える
0

INSTALLED_APPS内のコメントとして以下が削除されていることを確認してくださいsettings.py。その後、./manage.py syncdb再度実行します。以下に示すように#、前に

   # Uncomment the next line to enable the admin:
     'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
     'django.contrib.admindocs',
于 2012-10-27T18:37:55.460 に答える