Python 需要Django登录才能查看
我正在构建一个需要用户配置文件的小应用程序,我使用了Django的内置用户系统。但是我有一个问题,即使你没有登录,你仍然可以查看个人资料。另一件事是,每个用户应该只看到他的个人资料,而不是其他人。我需要一些提示 views.pyPython 需要Django登录才能查看,python,django,Python,Django,我正在构建一个需要用户配置文件的小应用程序,我使用了Django的内置用户系统。但是我有一个问题,即使你没有登录,你仍然可以查看个人资料。另一件事是,每个用户应该只看到他的个人资料,而不是其他人。我需要一些提示 views.py class UserProfileDetailView(DetailView): model = get_user_model() slug_field = "username" template_name = "user_detail.html
class UserProfileDetailView(DetailView):
model = get_user_model()
slug_field = "username"
template_name = "user_detail.html"
def get_object(self, queryset=None):
user = super(UserProfileDetailView, self).get_object(queryset)
UserProfile.objects.get_or_create(user=user)
return user
class UserProfileEditView(UpdateView):
model = UserProfile
form_class = UserProfileForm
template_name = "edit_profile.html"
def get_object(self, queryset=None):
return UserProfile.objects.get_or_create(user=self.request.user)[0]
def get_success_url(self):
return reverse("profile", kwargs={"slug": self.request.user})
您是否签出了所需的
login\u
decorator
由于您似乎正在使用基于类的视图,因此需要在urlconf中进行修饰 以下是您通常应该做的
@login_required
def my_view(request, uid):
# uid = user id taken from profile url
me = User.objects.get(pk=uid)
if me != request.user:
raise Http404
由于您使用的是基于类的泛型视图,因此需要在
url.py中添加decorator@login\u required
#urls.py
from django.contrib.auth.decorators import login_required
from app_name import views
url(r'^test/$', login_required(views.UserProfileDetailView.as_view()), name='test'),
这不是Django CBV的方法。在CBV中,他不能只使用@login\u rquired on dispatch方法吗?这意味着覆盖所有方法(如果他使用其他应用程序的视图),只需添加一个装饰器并调用superimplementation。非常不整洁。