我有文件userprofiles / mixins.py,我在其中创建了这个mixin
from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required
class LoginRequiredMixin(object):
@method_decorator(login_required(login_url = '/login/'))
def dispatch(self, request, *args, **kwargs):
return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
在我的文件userprofiles / views.py中,我有以下基于类的视图,名为ProfileView:
from .mixins import LoginRequiredMixin
class ProfileView(LoginRequiredMixin,TemplateView):
template_name = 'profile.html'
def get_context_data(self, **kwargs):
context = super(ProfileView, self).get_context_data(**kwargs)
if self.request.user.is_authenticated():
context.update({'userprofile': self.get_userprofile()})
return context
def get_userprofile(self):
return self.request.user.userprofile
在这个名为ProfileView的基于类的视图中,我可以毫无困难地从LoginRequiredMixin继承
这些mixin LoginRequiredMixin我也应用于名为AlbumListView的基于类的视图,该视图位于其他模块或app artists / views.py中。
基于类的视图AlbumListView是这样的:
from sfotipy.userprofiles.mixins import LoginRequiredMixin
class AlbumListView(LoginRequiredMixin,ListView):
model = Album
template_name = 'album_list.html'
def get_queryset(self):
if self.kwargs.get('artist'):
queryset = self.model.objects.filter(artist__slug__contains=self.kwargs['artist'])
else:
queryset = super(AlbumListView, self).get_queryset()
return queryset
导入LoginRequiredMixin时,我的IDE的独特方式不会标记错误,因为我继承了它:
from sfotipy.userprofiles.mixins import LoginRequiredMixin
我知道这种导入方式不正确,因为它是绝对导入的,正确的方法是进行相对导入。 其他方式应该在哪里工作:
from userprofiles.mixins import LoginRequiredMixin
但是,当我想要测试时,我收到以下错误消息......
如何进行此导入并且有效?
感谢您的定位:D