urls httpresponseredirect example django django-views django-urls django-settings

httpresponseredirect - Django: después de iniciar sesión, redirige al usuario a su página personalizada-> mysite.com/username



login django (5)

¡Sí! En su settings.py defina lo siguiente

LOGIN_REDIRECT_URL = ''/your-path''

Y tenga ''/ your-path'' como una simple Vista que busca self.request.user y hace la lógica que necesita para devolver un objeto HttpResponseRedirect .

Una mejor manera podría ser definir una URL simple como ''/simple'' que haga allí la lógica de búsqueda. La URL se ve más bella, te ahorra algo de trabajo, etc.

De forma predeterminada, después del inicio de sesión, django redirecciona al usuario a una página de cuentas / perfil o si edita el LOGIN_REDIRECT_URL puede enviar al usuario a otra página que especifique en settings.py.

Esto es genial, pero me gustaría que el usuario (después del inicio de sesión) sea redirigido a una página personalizada donde el enlace a esa página se vería así: mysite.com/username . Por lo tanto, las configuraciones predeterminadas de cuenta / perfil o LOGIN_REDIRECT_URL no funcionarían en este caso, ya que ambas son de alguna manera estáticas. En mi caso, la sección de username de username de la dirección cambia para cada usuario.

¿Alguna idea de cómo puedo hacerlo para que cuando el usuario inicie sesión vaya a una página de usuario personalizada que tenga el nombre del usuario en la dirección como: mysite.com/username ? Cualquier entrada es realmente apreciada.



Recientemente me encontré con Django y he estado buscando una solución para eso y encontré un método que podría ser útil.

Entonces, por ejemplo, si se usa allouth, el redireccionamiento predeterminado es cuentas / perfil. Cree una vista que redireccione únicamente a la ubicación que prefiera utilizando el campo de nombre de usuario como se muestra a continuación:

def profile(request): name=request.user.username return redirect(''--choose where--/'' + name + ''/'')

Luego, cree una vista que lo capture en una de sus aplicaciones, por ejemplo:

def profile(request, name): user = get_object_or_404(User, username=name) return render(request, ''myproject/user.html'', {''profile'': user})

Donde la captura de patrones de url se vería así:

url(r''^(?P<name>.+)/$'', views.profile, name=''user'')

Funciona bien para mi


Un enfoque más simple depende de la redirección de la página LOGIN_REDIRECT_URL . La clave es darse cuenta de que la información del usuario se incluye automáticamente en la solicitud.

Suponer:

LOGIN_REDIRECT_URL = ''/profiles/home''

y has configurado un urlpattern:

(r''^profiles/home'', home),

Entonces, todo lo que necesita escribir para la vista de home() es:

from django.http import HttpResponseRedirect from django.core.urlresolvers import reverse from django.contrib.auth.decorators import login_required @login_required def home(request): return HttpResponseRedirect( reverse(NAME_OF_PROFILE_VIEW, args=[request.user.username]))

donde NAME_OF_PROFILE_VIEW es el nombre de la devolución de llamada que está utilizando. Con django-profiles, NAME_OF_PROFILE_VIEW puede ser ''profiles_profile_detail''.


return render(request,''page_location/page_name'') return render(request,''home/page-login.html'')