私はDjangoを使い始めましたが、ユーザー認証に関してはよくわからないことがわかりました(通常のdjango.contrib.authメカニズムを使用)。
を使って「サイト」を作るとき
django-admin.py startproject mysite
私は「サーバー」のようなものを作成することを理解しています。次に、アプリを作成する必要があります(「はじめに」チュートリアルで説明されています)。サーバーではなく、アプリ用にモデルを作成します。私が持っている考え(これは完全に間違っているかもしれません)は、アプリはそれらの間でかなり独立している(互いにかなり分離されている)ということです。アプリごとにモデルを作成します。アプリごとに異なる「ビュー」のセットがあります。
しかし、ユーザー管理に関しては、その管理はプロジェクト全体(または「サーバー」)に対してグローバルであるように見えます。すべての設定はグローバルsettings.py
ファイルを介して指定され、組み込みのログインページはグローバルtemplates/
ディレクトリに保存されます... 2つのアプリがあり、それらのログインページに異なる側面を持たせたい場合はどうなりますか?ログインに成功した後、ユーザーがログインしようとしたアプリに応じて、app#1の特定のページまたはapp#2の別の特定のページにリダイレクトしたい場合はどうなりますか?たぶん私はDjangoアプリの背後にある概念全体を誤解していますか?
基本的に、私はmystartapp
と呼ばれるプロジェクト内にアプリケーションを持っていますmyserver
。組み込みのログインビューを使用して、フォームをに送信してい"django.contrib.auth.views.login"
ます。デフォルトの設定では、ログインに成功すると、私はにリダイレクトされませhttp://127.0.0.1:8000/accounts/profile/
んでした。
settings.py
グローバルファイルとグローバルファイルを編集することで回避策を見つけることができurls.py
ます。
---------- settings.py ----------
[ . . . ]
# User Logging in Settings
LOGIN_URL = '/login'
LOGIN_REDIRECT_URL = '/'
[ . . . ]
---------------------------------
と
------------ urls.py ------------
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'myserver.views.home', name='home'),
# url(r'^myserver/', include('myserver.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
#The following line will include the urls for the "mystartapp" application
url(r'^s', include('mystartapp.urls', namespace="mystartapp")), #Dirty trick
url(r'^mystartapp/', include('mystartapp.urls', namespace="mystartapp")),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
url(r'^login/$', 'django.contrib.auth.views.login'),
)
------------------------------
このように、10行目(コメント付きの行)のおかげで、#'Dirty trick'
のルートに行くすべてのものが、127.0.0.1:8000/
を使用した場合と同じURLのセットにリダイレクトされ、のオプション127.0.0.1:8000/mystartapp/
と組み合わせて 、ブラウザーを作成することになります。正しくログインした後、にリダイレクトしますが、それは「クリーン」ではないようです。LOGIN_REDIRECT_URL = '/'
settings.py
127.0.0.1:8080/mystartapp/index.html
へのリダイレクトを確立するためのより良い方法はあり127.0.0.1:8080/mystartapp/index.html
ますか?汚いトリックは本当に汚いトリックですか、それともそれが機能するはずの方法ですか?ここで何かが足りませんか?(ただし、この最後の質問に対する答えは「はい」だと確信しています)
前もって感謝します。