Also verwende ich django-Registrierung App, um eine Benutzerregistrierungsseite für meine Website zu implementieren. Ich benutzte Djangos Backends. Einfache Ansichten, die den Benutzern erlauben, sich sofort nach der Registrierung anzumelden. Meine Frage ist, wie leite ich sie auf die Seite meiner anderen App um, die sich im selben Verzeichnis wie das Projekt befindet. HierWie können Benutzer nach der Registrierung in der Django-Registrierung zu einer bestimmten URL weitergeleitet werden?
ist, was mein Haupt urls.py wie folgt aussieht:
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 der Name des anderen App, die ich im Projektverzeichnis mysite habe.
Dies ist, was die backends.simple.urls wie folgt aussieht:
"""
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')),
)
Und hier ist die 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(),(), {})
Ich habe versucht, die die get_success_url Funktion nur Rückkehr zu ändern die URL, die ich will, ist/upload/neu, aber es hat mich immer noch an die Benutzer/umgeleitet Benutzername einfügen Seite und gab einen Fehler. Wie leite ich den Nutzer auf die Upload-/neue Seite weiter, auf der sich die andere App nach der Registrierung befindet?
Wo genau stelle ich die Klasse MyRegistrationView? Geht es auf die ansichten.py im backend.simple-ordner oder die im registrierungsordner? – user2476295
Wie oben erwähnt, ändern Sie nicht den Code im Registrierungsmodul. Es würde es viel schwieriger machen, auf die nächste Version der Django-Registrierung zu aktualisieren. Sie können die Klasse in eine der Ansichten von view.py Ihrer eigenen App einfügen. Sie können es in das "urls.py" aufnehmen, wenn Sie möchten, da es nur drei Zeilen lang ist. – Alasdair
Also habe ich versucht, die beiden Code-Blöcke in die backends.simple.urls.py zu legen. Da die Hauptdatei urls.py in meinem Projektordner einen Aufruf an die simple.urls macht, wie Sie von oben sehen können.Es funktioniert immer noch nicht und leitet direkt nach der Registrierung auf die Benutzer-/Benutzernamen-Seite um (nicht einloggen) – user2476295