Django:需要条件登录的视图
给定视图,Django:需要条件登录的视图,django,django-views,django-urls,Django,Django Views,Django Urls,给定视图,latest_objs,如果URL中有参数,我希望该视图需要有条件地登录 目标是: 如果传递的URL是latest objs,则返回与任何特定用户无关的objs非身份验证视图 如果传递的URL是最新的objs/mine,如果用户没有经过身份验证,我想要求登录,因为该版本的视图应该返回与经过身份验证的用户相关的objs 问题: 检查request.GET.GET('some-param')是否正确 如何在url.py文件中定义这两个场景?目前我有: url(r'latest-objs',
latest_objs
,如果URL中有参数,我希望该视图需要有条件地登录
目标是:
latest objs
,则返回与任何特定用户无关的objs
非身份验证视图最新的objs/mine
,如果用户没有经过身份验证,我想要求登录,因为该版本的视图应该返回与经过身份验证的用户相关的objs
request.GET.GET('some-param')是否正确
url.py
文件中定义这两个场景?目前我有:
url(r'latest-objs', views.latest_objs, name='latest_objs'),
有点离题:我想知道是否值得为此费心,或者仅仅创建两个不同的视图。您使用
请求。当您的URL有查询字符串时,获取,例如/latest objs?owner=me
对于URL/latest objs/mine
,您必须修改您的URL模式,或添加新的模式。我更喜欢添加一个新的URL模式,因为我认为它更具可读性。您可以使用新视图
url(r'latest-objs/mine', views.my_objs, name='my_objs'),
或者使用相同的视图,并将mine
传递给该视图,以便您可以判断匹配的URL模式
url(r'latest-objs/mine', views.latest_objs, {'mine': True}, name='my_objs'),
如果使用后面的方法,则需要更新视图以接受mine
作为参数
def latest_objs(request, mine=False):
...
重用相同的视图还是不同的视图是一个判断问题,我认为这取决于视图。对于一个简单的视图,单独的视图将是最直接的,因为您可以使用登录所需的decorator或mixin来处理重定向。对于更复杂的视图,单独的视图可能会导致代码重复