私は自分のサイトのユーザー登録ページを実装するためにdjango登録アプリを使用しています。私はDjangoのバックエンドを使用しました。ユーザーはすぐに登録後にログインすることができます。私の質問は、プロジェクトと同じディレクトリにある私の他のアプリのページにそれらをリダイレクトする方法です。django登録の登録後、特定のURLにユーザをリダイレクトする方法は?
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()
urlpatterns = patterns('',
url(r'^accounts/', include('registration.backends.simple.urls')),
url(r'^upload/', include('mysite.fileupload.urls')),
# Examples:
# url(r'^$', 'mysite.views.home', name='home'),
# url(r'^mysite/', include('mysite.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)),
)
import os
urlpatterns += patterns('',
(r'^media/(.*)$', 'django.views.static.serve', {'document_root': os.path.join(os.path.abspath(os.path.dirname(__file__)), 'media')}),
)
ファイルアップロードは、私はプロジェクトディレクトリの個人用サイトを持っている他のアプリの名前である:ここで
は次のように私のメインのurls.pyが見えるものです。これはbackends.simple.urlsは、次のようになります。
"""
URLconf for registration and activation, using django-registration's
one-step backend.
If the default behavior of these views is acceptable to you, simply
use a line like this in your root URLconf to set up the default URLs
for registration::
(r'^accounts/', include('registration.backends.simple.urls')),
This will also automatically set up the views in
``django.contrib.auth`` at sensible default locations.
If you'd like to customize registration behavior, feel free to set up
your own URL patterns for these views instead.
"""
from django.conf.urls import include
from django.conf.urls import patterns
from django.conf.urls import url
from django.views.generic.base import TemplateView
from registration.backends.simple.views import RegistrationView
urlpatterns = patterns('',
url(r'^register/$',
RegistrationView.as_view(),
name='registration_register'),
url(r'^register/closed/$',
TemplateView.as_view(template_name='registration/registration_closed.html'),
name='registration_disallowed'),
(r'', include('registration.auth_urls')),
)
そして、ここではbackends.simple.viewsです:
from django.conf import settings
from django.contrib.auth import authenticate
from django.contrib.auth import login
from django.contrib.auth.models import User
from registration import signals
from registration.views import RegistrationView as BaseRegistrationView
class RegistrationView(BaseRegistrationView):
"""
A registration backend which implements the simplest possible
workflow: a user supplies a username, email address and password
(the bare minimum for a useful account), and is immediately signed
up and logged in).
"""
def register(self, request, **cleaned_data):
username, email, password = cleaned_data['username'], cleaned_data['email'], cleaned_data['password1']
User.objects.create_user(username, email, password)
new_user = authenticate(username=username, password=password)
login(request, new_user)
signals.user_registered.send(sender=self.__class__,
user=new_user,
request=request)
return new_user
def registration_allowed(self, request):
"""
Indicate whether account registration is currently permitted,
based on the value of the setting ``REGISTRATION_OPEN``. This
is determined as follows:
* If ``REGISTRATION_OPEN`` is not specified in settings, or is
set to ``True``, registration is permitted.
* If ``REGISTRATION_OPEN`` is both specified and set to
``False``, registration is not permitted.
"""
return getattr(settings, 'REGISTRATION_OPEN', True)
def get_success_url(self, request, user):
return (user.get_absolute_url(),(), {})
私はリターンにget_success_url機能を変更してみましたURLは/ upload/newですが、まだユーザー/ のユーザ名ページにリダイレクトされ、エラーが発生しました。登録後に他のアプリがあるアップロード/新規ページにユーザーをリダイレクトするにはどうすればよいですか?
正確にMyRegistrationViewクラスを作成しますか?これは、backend.simpleフォルダのviews.py、または登録フォルダ内のviews.pyにありますか? – user2476295
上記のとおり、登録モジュールのコードを変更しないでください。 django-registrationの次のバージョンにアップグレードするのはずっと難しくなります。自分のアプリのviews.pyにクラスを置くことができます。あなたが望むのであれば、 'urls.py'にそれを含めることができます。なぜなら3行しかないからです。 – Alasdair
だから、私はこれを両方のブロックをbackends.simple.urls.pyに入れました。私のプロジェクトフォルダのメインのurls.pyファイルは上から分かるようにsimple.urlsを呼び出します。それはまだ動作しませんし、登録(ログインではなく)の直後にユーザ/ユーザ名ページにリダイレクトします – user2476295