Używam aplikacji do rejestracji django, aby zaimplementować stronę rejestracji użytkownika dla mojej witryny. Użyłem backends.imple poglądów Django, który pozwala użytkownikom na natychmiastowe logowanie po rejestracji. Moje pytanie brzmi: jak mogę przekierować je na stronę mojej drugiej aplikacji znajdującą się w tym samym katalogu, co projekt.Jak przekierować użytkowników do określonego adresu URL po rejestracji w rejestracji django?
Oto co moim głównym urls.py wygląda następująco:
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')}),
)
FileUpload to nazwa drugiej aplikacji mam w mysite Directory Project.
To właśnie backends.simple.urls wygląda następująco:
"""
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')),
)
A oto 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(),(), {})
Próbowałem zmiany funkcji get_success_url po prostu powrót adres URL, który chcę/upload/new, ale nadal przekierowywał mnie do użytkowników/wstawić nazwę użytkownika stronę i dał błąd. Jak mogę przekierować użytkownika do strony wysyłania/nowej strony, w której druga aplikacja znajduje się po rejestracji?
Gdzie dokładnie umieszczam klasę MyRegistrationView? Czy działa on w pliku views.py w folderze backend.simple lub w folderze rejestracyjnym? – user2476295
Jak już powiedziałem, nie należy zmieniać kodu w module rejestracji. Znacznie trudniej byłoby przejść na kolejną wersję rejestracji django. Możesz umieścić lekcję w pliku views.py Twojej aplikacji. Możesz dodać go do 'urls.py', jeśli wolisz, ponieważ ma tylko trzy linie. – Alasdair
Próbowałem więc umieścić oba bloki kodu w backends.simple.urls.py Ponieważ główny plik urls.py w folderze projektu wywołuje funkcję simple.urls, jak widać z góry.Nadal nie działa i przekierowuje na stronę użytkownik/nazwa użytkownika zaraz po rejestracji (nie logowaniu). – user2476295