python - tutorial - ¿Cómo se muestra una página para el usuario que inició sesión y otra para un usuario que no inició sesión con Django?
httpresponse django example (1)
No tiene sentido tener dos vistas, simplemente configure los movimientos dependiendo de si está autenticado en la vista única
if request.user.is_authenticated():
movements = Movement.objects.filter(author=request.user).order_by(''-moved_on'')
else:
movements = Movement.objects.order_by(''?'')[:10]
Estoy seguro de que esta pregunta se ha formulado antes, pero no puedo encontrar una respuesta aquí.
El objetivo : mostrar a un usuario que no está conectado en una variedad aleatoria de publicaciones, pero un usuario que ha iniciado sesión en todas sus publicaciones.
Las dos vistas desde views.py:
def movement_random(request):
movements = Movement.objects.order_by(''?'')[:10]
return render(request, ''blog/movement_random.html'', {''movements'': movements})
@login_required
def movement_list(request):
movements = Movement.objects.filter(author=request.user).order_by(''-moved_on'')
return render(request, ''blog/movement_list.html'', {''movements'': movements})
Desde urls.py:
de django.conf.urls import url, include from. vistas de importación
urlpatterns = [
url(r''^$'', views.movement_random, name=''index''),
url(r''^$'', views.movement_list, name=''movement_list''),
url(r''^movement/(?P<pk>/d+)/$'', views.movement_detail, name=''movement_detail''),
url(r''^movement/new/$'', views.movement_new, name=''movement_new''),
url(r''^movement/(?P<pk>/d+)/edit/$'', views.movement_edit, name=''movement_edit''),
url(r''^accounts/'', include(''registration.backends.hmac.urls'')),
]
Tal como está ahora, la "página de inicio" de la aplicación es, en este momento, siempre la primera URL, incluso con un usuario conectado. ¿Cómo muestro las views.movement_list
a un usuario conectado mientras que views.movement_random
a un no usuario?