python - applications - django tutorial español pdf
¿Dónde es un buen lugar para trabajar en cuentas/perfil en Django con la aplicación de registro de Django? (3)
Me he dado cuenta de que, después de iniciar sesión con el registro de Django, me redirige a accounts/profile/
. Por defecto, el registro url.py
de url.py
no maneja las accounts/profile/
, así que necesito crear mi propia cuenta.
En realidad esta pregunta es triple:
- ¿Por qué después de iniciar sesión, redirige a
accounts/profile/
? ¿Existe alguna manera de cambiar esto? Preferiblemente después de iniciar sesión con éxito, me gustaría que Django redirigiera a la página antes de la página de inicio de sesión. - Si tuviera que crear mi propia vista y plantilla para las
accounts/profile/
, ¿dónde debería colocarlo? Losusers
incorporados de Django (auth_user
) se comparten entre todas las aplicaciones de Django dentro de un proyecto, ¿debería colocar elview.py
en la carpeta del proyecto y no dentro de la carpeta de la aplicación? - ¿O el perfil de Django realmente se ocupa de toda esta
account/profiles/
cosa? Ya extendí la clase deUser
de Django con mi propioUser
deUser
, pero es más como campos adicionales a la tabla deUser
que un "perfil" real (no creé avatares ni nada de eso, solo cosas simples como direcciones y números de teléfono, pero la mayoría importante, algunos tipos de usuarios personalizados de los que depende mi aplicación).
¿Por qué después de iniciar sesión, redirige a cuentas / perfil /? ¿Existe alguna manera de cambiar esto? Preferiblemente después de iniciar sesión con éxito, me gustaría que Django redirigiera a la página antes de la página de inicio de sesión.
Solo cambia la configuración LOGIN_REDIRECT_URL
Si tuviera que crear mi propia vista y plantilla para las cuentas / perfil /, ¿dónde debería colocarlo? Los usuarios incorporados de Django (auth_user) se comparten entre todas las aplicaciones de Django dentro de un proyecto, ¿debería colocar el view.py en la carpeta del proyecto y no dentro de la carpeta de la aplicación?
Me gusta crear una aplicación llamada "project_specific" en cada proyecto. Ahí es donde pongo todas las cosas que no están destinadas a ser reutilizables y que combinan muchas aplicaciones.
También puede crear un views.py en el nivel del proyecto, pero eso es un poco complicado en comparación con hacer una aplicación específica del proyecto.
En realidad no importa donde lo pongas.
¿O el perfil de Django realmente se ocupa de toda esta cuenta / perfiles / cosa? Ya extendí la clase de Usuario de Django con mi propio Perfil de Usuario, pero es más como campos adicionales a la tabla de Usuario que un "perfil" real (no creé avatares ni nada de eso, solo cosas simples como direcciones y números de teléfono, pero la mayoría importante, algunos tipos de usuarios personalizados de los que depende mi aplicación).
Esa no es la manera de agregar campos de usuario adicionales. Le recomiendo que lea los documentos en Almacenamiento de información adicional sobre los usuarios .
- Establezca LOGIN_REDIRECT_URL en la configuración - LOGIN_REDIRECT_URL
- Crear una aplicación de cuenta, donde contiene código para esto.
Puede usar django userena para el área de usuario de pila completa: https://django-userena.readthedocs.org/en/latest/
Para un enfoque mínimo que no requiere una aplicación independiente,
Crea una plantilla y
profile.html
o lo que quieras.<p>This is your profile, {{ user.username }}.</p>
En
urls.py
, agregue un patrón de url que apunte a su plantilla de perfil,login_required
y déle un nombre a la url:# ... from django.views.generic import TemplateView from django.contrib.auth.decorators import login_required urlpatterns = [ # ... url(r''^accounts/profile/$'', TemplateView.as_view(template_name=''profile.html''), name=''user_profile''), # ... ]
En
settings.py
, agregue la siguiente línea:LOGIN_REDIRECT_URL = ''user_profile''
Esta línea le dice a Django que realice una búsqueda de URL inversa por nombre al redireccionar a un usuario después de iniciar sesión. Sin esta línea, su aplicación seguirá funcionando pero será frágil porque se basa en una URL codificada de manera arbitraria que está configurada implícitamente por Django. Con esta línea, si usted o alguien más decide que los perfiles de usuario deberían estar en /me/
, podría cambiar la URL en el paso 2 sin romper su aplicación.