首先,很抱歉,如果我不清楚我要做什么,或者我没有提供足够的信息,我仍然是Django/Python的新手。
我目前有一个视图,可以呈现类似于博客文章的内容:
class SingleCharacter(LoginRequiredMixin,generic.DetailView):
model = models.Character
def get_context_data(self, **kwargs):
context = super(SingleCharacter, self).get_context_data(**kwargs)
return context
并且,在此视图的模板中,我有一个模板标记,用于检查用户是否已通过身份验证以及帖子的所有者:
{% if user.is_authenticated and user == character.user %}
然而,我目前正在将xhtml2pdf整合到我的项目中,这种只将帖子提供给创建它的用户的方法导致了一些问题。
我想知道是否可以将user.is_authenticated和user == character.user移到视图中而不是模板标记中,如果可以,我可以使用一个简单的if语句来实现,就像这样?
class SingleCharacter(LoginRequiredMixin,generic.DetailView):
model = models.Character
if user.is_authenticated and user == character.user:
def get_context_data(self, **kwargs):
context = super(SingleCharacter, self).get_context_data(**kwargs)
return context
else:
<I'll include some redirect to a 404 page>
我正在试着看看是否有其他的方法,但我想我应该在这里把它抛给更有经验的人,希望能弄清楚。
谢谢你的帮助!
发布于 2018-08-03 04:42:42
您可以覆盖DetailView的get
方法并处理那里的逻辑:
class SingleCharacter(LoginRequiredMixin,generic.DetailView):
model = models.Character
def get(self, request, *args, **kwargs):
self.object = self.get_object()
if self.request.user.is_authenticated and self.request.user == self.object.user:
context = self.get_context_data(object=self.object)
return self.render_to_response(context)
else:
# redirect
https://stackoverflow.com/questions/51661642
复制相似问题