2

以前は、古いバージョンのdjango-registrationを使用していましたが、現在は廃止されているようです。私のサーバーではPythonプラグインをインストールできないため、「登録」を個別のdjangoアプリケーションとして使用する必要があります。今私の質問は、登録をdjango-appとして実行するために何を変更する必要があるかということです。'registration'をdjangoプロジェクトカタログにコピーして設定に追加するだけで機能しますか?以前は「backend」が定義されていませんでしたが、現在は「path」を引数として取る関数get_backendを持つバックエンドinitファイルです。このパスはURL経由で送信されていると思いますよね?

       url(r'^activate/(?P<activation_key>\w+)/$',
           activate,
           {'backend': 'registration.backends.default.DefaultBackend'},
           name='registration_activate'),

このカタログ内には、DefaultBackendクラスを含むinitファイルもあり、クラスはアクティブ化されて登録されます。

http://paste.pocoo.org/show/225790/

どちらも信号を使用します。何らかの方法でこれらの信号を気にする必要がありますか?(私はまだそれらが使用されているものを完全には理解していません)。最後のもの。以前は、登録後、success_urlを指定するか、次のようにテンプレートを設定してリダイレクトしていました。

return HttpResponseRedirect(success_url or reverse('registration_complete'))

これを担当するコードは次のようになります。

        if success_url is None:
            to, args, kwargs = backend.post_registration_redirect(request, new_user)
            return redirect(to, *args, **kwargs)
        else:
            return redirect(success_url)

およびpost_registration_redirect:

def post_registration_redirect(self, request, user):
    """
    Return the name of the URL to redirect to after successful
    user registration.

    """
    return ('registration_complete', (), {})

それでも単に'registration_complete'にリダイレクトするのに、なぜこれがこのように変更されたのでしょうか。argsとkwargsは空なので、なぜわざわざするのですか?

4

2 に答える 2

1

状況は、あなたが考えているよりもはるかに単純です。Djangoアプリケーション(登録など)は通常のPythonパッケージであり、そのままインポートできます。つまり、登録は、Pythonパス内のどこにでも存在できるということです。多くの場合、そのための最も簡単な場所は、ルートプロジェクトディレクトリです。

そこでのバックエンド引数は、Pythonのインポートパスを取ります。必要に応じてカスタムバックエンドを使用するようにDjango-Registrationを拡張できるように、引数が追加されました。

登録ディレクトリをPythonパスに配置すると、既存の文字列は問題なく機能するはずです。

于 2010-06-15T19:53:20.417 に答える
0

引用:

"Because my server does not allow me to install python plugins I need to 
 use 'registration' as separate django application."

これは、rootアクセス権がないためですか?virtualenv(リンクは私自身のブログへのリンク)を使用して、独自の(完全に書き込み可能な)Python / Djangoインストールを作成しようとしましたか?または、書き込みアクセス権のある場所に書き込み可能なディレクトリを作成し、そこにdjango-registrationをインストールして、PYTHON_PATHをその場所にポイントしますか?

IMO、「django-registrationのインストール」オプションをすぐに諦め、より複雑な「別のサーバーで実行」オプションに移行したようです。

于 2010-09-15T19:35:00.937 に答える