在我的Django项目中,我有Products
。Django:限制访问页面
您可以使用此URL模式访问产品:
example.com/tshirt
或example.com/jacket
等
此外,还可以查看其他一些网页的那些产品,即:
example.com/tshirt/details
或example.com/jacket/buy
我的问题: 当我在管理界面中创建新产品时,默认情况下会停用产品(我可以激活它后来)。原因是,当我创建一个新产品时,我通常没有所有必要的信息(即价格)。只要产品停用,所有以example.com/this-one-product
开头的网址对普通访问者而言都不可见(404错误)。不幸的是,我不知道该怎么做。
我的目标是它对超级用户或员工的用户可见。因为他们可以检查该产品并查看其呈现时的外观,这是有道理的。但是,如前所述,网页的普通访问者不应该看到它。
现在我当然可以在所有这些视图中创建if语句(并检查超级用户或员工),但这听起来不像是一个优雅的解决方案。因为我必须将这些语句添加到许多不同的视图,这是违反DRY的,我只是不喜欢这个解决方案。
什么是完美的: 设置为停用的产品的所有访问者提供404错误。这怎么可能?
你需要重写你的queryset与你的规则,为更多的帮助你需要显示你的详细信息视图。 –
这似乎在文档中描述[https://docs.djangoproject.com/en/1.11/ref/contrib/admin/actions/](https://docs.djangoproject.com/en/1.11/ref/ contrib/admin/actions /) –
[Django可能是\ _staff权限装饰器](https://stackoverflow.com/questions/5833184/django-is-staff-permission-decorator) –