擅长:python、mysql、java
<p>多亏了阿里,这个答案帮了我很大的忙,但对我不起作用。</p>
<p>当我找到这个片段时,我让它正常工作:<a href="http://djangosnippets.org/snippets/983/" rel="noreferrer">http://djangosnippets.org/snippets/983/</a></p>
<p>这个解决方案对我有效:</p>
<p><strong>帮助函数</strong></p>
<p>此函数的好处是可以在其他地方重用,作为<code>user.is_authenticated</code>的替换项。例如,它可以作为模板标记公开。</p>
<pre><code>def my_custom_authenticated(user):
if user:
if user.is_authenticated():
return user.groups.filter(name=settings.MY_CUSTOM_GROUP_NAME).exists()
return False
</code></pre>
<p><strong>装饰工</p>
<p>我只是把这个放在我的<code>views.py</code>上面,因为它太短了。</p>
<pre><code>def membership_required(fn=None):
decorator = user_passes_test(my_custom_authenticated)
if fn:
return decorator(fn)
return decorator
</code></pre>
<p><strong>使用它</strong></p>
<pre><code>@membership_required
def some_view(request):
...
</code></pre>