with template register loginview custom and python django django-templates django-views django-permissions

python - register - logout template django



Permisos de usuario para el módulo Django (4)

Como está utilizando el sistema de permisos de Django, es mejor que use la siguiente sintaxis de la plantilla ...

{%if perms.followup.add_followup%}your URL here{%endif%}

EDITAR: Django crea automáticamente 3 permisos para cada modelo, ''agregar'', ''cambiar'' y ''eliminar''. Si no existe un modelo para agregar un enlace, entonces debe agregar el permiso del modelo relacionado, en la clase de modelo Meta ... Del mismo modo:

somemodels.py

class SomeModel(Model): ... class Meta: permissions = ((''add_followup'',''Can see add urls''),(...))

En la página de administración del usuario de autenticación Django, puede ver su permiso. En la capa de la plantilla, el permiso se presenta con el estilo básico de Django,

<app_label>.<codename>

que, en este caso, será como:

{%if perms.somemodels.add_followup%}your URL here{%endif%}

Si no hay un modelo relacionado con el trabajo que desea realizar, agregue el permiso a un modelo ...

En tu plantilla, puedes escribir

{{perms.somemodels}}

para sellar los permisos disponibles para ese usuario, donde somemodel es el nombre de la aplicación en la que agrega su permiso a uno de sus modelos.

Tengo un pequeño problema con mis permisos en mi plantilla de Django.

Intento, según los permisos, mostrar un icono en la barra de menú de mi proyecto. Quiero tenerlo de modo que si el usuario tiene los permisos para agregar un nuevo seguimiento al proyecto, puede ver el icono, si no tienen ese permiso, entonces no muestra el enlace.

Mi sintaxis de permiso es follow.add_followup , que obtuve al imprimir user.get_all_permissions() .

He intentado este código en mi plantilla:

... {% if user.has_perm(''followup.add_followup'') %} <li><a href="{% url followup-new p.id %}">Log</a></li> {% endif %} ...

Pero cuando muestro la plantilla, me aparece este error:

TemplateSyntaxError at / project / 232 / view /

No se pudo analizar el resto: ''(followup.add_followup)'' de ''user.has_perm (followup.add_followup)''

¿Alguna idea? ¡Esto me ha estado dando dolor de cabeza! :)


Documentación de Django que detalla la respuesta n. ° 2: https://docs.djangoproject.com/en/dev/topics/auth/#id9

Los permisos del usuario que está conectado actualmente se almacenan en la variable de plantilla {{perms}}. Esta es una instancia de django.contrib.auth.context_processors.PermWrapper, que es un proxy de permisos amigable a la plantilla.


Esta es mi solución muy simple, en su plantilla agregue esto:

por ejemplo:

....... {% if ''user.can_drink'' in user.get_all_permissions %} {{ user }} can drink. ....... {% else %} {{ user }} can´t drink. ........ {% endif %} .......


He intentado este código en mi plantilla:

Este tipo de toma de decisiones compleja va en las funciones de vista.

O entra en el contexto que luego se presenta a la plantilla.

https://.com/search?q=%5Bdjango%5D+context

Cuándo usar el procesador de contexto

Haz esto en tu vista

def my_view( request ): followup= user.has_perm(''followup.add_followup'') # etc. return render_to_response( template, {''followup'':followup,... )

Entonces tu plantilla es simplemente

{% if followup %} <li><a href="{% url followup-new p.id %}">Log</a></li> {% endif %}