django:如何创建协议条款

时间:2013-11-06 17:44:32

标签: python django django-views django-middleware

我正在使用已连接到单点登录系统的网站。现在我想添加协议条款页面。以下是我想到的流程:

如果我有登录用户的记录,这意味着用户已经看过它,所以我们不再需要显示协议页面。但如果表中不存在记录,我想重定向到具有协议条款的视图,用户只有在接受后才能进一步登录。如果不接受,我们会显示该网站的非签名版本。

由于它是系统上的单一登录,因此我在我的终端创建了一个表,以便跟踪登录该站点的用户。这是我应该查阅的表格。

以下是我在登录时创建记录的方法: 这是我的中间件类

shib_umnPersonType = shib_meta.get('uPersonType','')
shib_uRole = shib_umnPersonType.strip().split(';')[0]
#raise(shib_meta)
try:
    shib_user = ShibUser.objects.get(shib_username=username)
    user = shib_user.auth_user
    user.backend = "django.contrib.auth.backends.RemoteUserBackend"
except ObjectDoesNotExist:
    user = auth.authenticate(remote_user=username)
    user.shibuser_set.create(shib_username=username, shib_user_role=shib_uRole)   

我现在在想的是我应该在以下的情况下中断请求:但我不确定那是不是应该这样做。我也不是django开发人员的经验。

如果这样做,那么我想我应该使用该位置的表单调用一个视图然后检查响应...?

1 个答案:

答案 0 :(得分:0)

你可以使用视图装饰器。

如果您在装饰器中检测到该用户尚未同意最近的条款,则将其重定向到“条款”页面,并将额外参数传递给该视图。如果用户接受条款,请在条款视图中选择该参数,并根据该参数将用户重定向到上一个视图。