2017-01-26 13 views
0

Я создаю приложение в Django, и я хотел бы настроить домашнюю страницу для аутентифицированных пользователей.Как использовать Детский просмотр Django (или какой-либо встроенный класс представления) для домашней страницы?

Я думал, что лучше всего использовать встроенный generic.DetailView для этого, учитывая, что детали, которые я хочу показать на странице, - это идентификаторы идентифицированного пользователя. Дело в том, что этот класс должен получить идентификатор целевого объекта через URL как десятичный аргумент pk. Однако информация об объекте находится в request.user, и я хотел бы избежать повторения этой информации, чтобы не показывать идентификаторы пользователя в URL-адресах.

Я бы предположил, что получение request в рамках метода get_object сделало бы трюк, но оно не принимает аргументов.

Возможно ли это? Это хорошая идея? Есть ли какие-то альтернативы, которые я могу потерять?

ответ

1

Для получения объекта требуется DetailView или pk или slug. Если вы переопределяете get_object, тогда это не требуется. В методе get_object вы можете получить доступ к пользователю с помощью self.request.user.

Наконец, если ваше представление использует зарегистрированного пользователя, вы можете использовать LoginRequiredMixin, чтобы обеспечить доступ только к просмотру только зарегистрированным пользователям.

from django.contrib.auth.mixins import LoginRequiredMixin 

class MyDetailView(LoginRequiredMixin, DetailView): 
    ... 
    def get_object(self): 
     return self.request.user 
+0

Это было так просто ... спасибо! но ... это хорошая идея? – coya