如何从示例中获取用户名部分。com/username/gallery 在 ArchiveIndexView 的情况下?
How to get username part from example.com/username/gallery in case of ArchiveIndexView?
目前我可以通过任何 url 获取当前登录用户的图库,因为
example.com/user/gallery
example.com/user123/gallery
example.com/312any-thing/gallery
这不是我想要的。我想要的是先检查用户是否存在,然后通过 ArchiveIndexView
.
提供所需的图库
如何在 ArchiveIndexView
class 中获取 example.com/username
/图库的 username
部分以实现
user = get_object_or_404(UserProfile, slug=username)
?
# project urls
urlpatterns = [
url(r'^(?P<slug>[\w.-]+)/', include('profiles.urls', namespace='profiles_user')),
]
# app.urls
urlpatterns = [
url(r'^$', views.ProfileDetailView.as_view(), name='profiles_home'),
url(r'^gallery/$', views.ProfileGalleryArchiveIndexView.as_view(), name='profiles_gallery'),
]
# app.views
class ProfileGalleryDateView(object):
date_field = 'date_added'
allow_empty = True
class ProfileGalleryArchiveIndexView(ProfileGalleryDateView, ArchiveIndexView):
def get_queryset(self):
user = self.request.user # here I want to get username from url
user = get_object_or_404(UserProfile, slug=username)
return Gallery.objects.filter(galleryextended__user=user).is_public()
我尝试从 url 获取 username
使用:
def get_context_data(self, **kwargs):
context = super(ProfileDetailView, self).get_context_data(**kwargs)
user = get_object_or_404(UserProfile, pk=kwargs['object'].pk)
但 get_queryset
比 get_context_data
执行得早。
您的 URL 将用户名捕获为 slug
,因此您可以从 self.kwargs['slug']
获取它。
目前我可以通过任何 url 获取当前登录用户的图库,因为
example.com/user/gallery
example.com/user123/gallery
example.com/312any-thing/gallery
这不是我想要的。我想要的是先检查用户是否存在,然后通过 ArchiveIndexView
.
如何在 ArchiveIndexView
class 中获取 example.com/username
/图库的 username
部分以实现
user = get_object_or_404(UserProfile, slug=username)
?
# project urls
urlpatterns = [
url(r'^(?P<slug>[\w.-]+)/', include('profiles.urls', namespace='profiles_user')),
]
# app.urls
urlpatterns = [
url(r'^$', views.ProfileDetailView.as_view(), name='profiles_home'),
url(r'^gallery/$', views.ProfileGalleryArchiveIndexView.as_view(), name='profiles_gallery'),
]
# app.views
class ProfileGalleryDateView(object):
date_field = 'date_added'
allow_empty = True
class ProfileGalleryArchiveIndexView(ProfileGalleryDateView, ArchiveIndexView):
def get_queryset(self):
user = self.request.user # here I want to get username from url
user = get_object_or_404(UserProfile, slug=username)
return Gallery.objects.filter(galleryextended__user=user).is_public()
我尝试从 url 获取 username
使用:
def get_context_data(self, **kwargs):
context = super(ProfileDetailView, self).get_context_data(**kwargs)
user = get_object_or_404(UserProfile, pk=kwargs['object'].pk)
但 get_queryset
比 get_context_data
执行得早。
您的 URL 将用户名捕获为 slug
,因此您可以从 self.kwargs['slug']
获取它。