django - 如何在 Django 中识别没有登录功能的用户?
问题描述
我正在制作 Django 应用程序,访问者可以在没有登录功能的情况下回答问题。每个答案的数量将被计为“投票”,但我需要限制用户只回答一次问题。
我需要有这方面经验的人的帮助。
解决方案
您可以使用Django Sessions或尝试使用来自每个请求的元数据自行破解某些内容。
Django 会话
Django 完全支持匿名会话。会话框架允许您基于每个站点访问者存储和检索任意数据。它将数据存储在服务器端,并抽象了 cookie 的发送和接收。Cookie 包含会话 ID——而不是数据本身(除非您使用基于 cookie 的后端)。
请求元数据
在 Django 中的每个请求中,它都会携带一些名为的东西META
,它携带有关请求的元数据。根据您使用 Django 视图(基于函数的视图或基于类的视图)的方式,您的访问方式会META
有所不同。
Django 中的请求对象是一个键值对存储,或者基本上是一个字典。因此,在您将使用的基于函数的视图中。如果您要跟踪 IP 地址,则可以REMOTE_ADDR
在META
. 但是,这并非万无一失,因为用户可能会使用 VPN 以不同的 IP 地址进行浏览。
基于函数的视图
def my_view(request):
ip_address = request.META['REMOTE_ADDR']
# do your stuff
基于类的视图
class MyClass(TemplateView):
def get_context_data(self):
ip_address = self.request.META['REMOTE_ADDR']
# do your stuff
context['ip_address'] = ip_address
从那里你可能想为你正在尝试做的事情提供更多细节。但是您应该能够使用请求META
对象中的某种数据组合来跟踪您的用户并为他们提供更好的体验。
推荐阅读
- java - 如何发送数组列表
到片段适配器 - javascript - ? 前面的令牌是不可量化的
- mysql - FORMAT 函数不适用于列中的所有数字?
- android - 防止在 Airwatch 托管设备上进行 android 应用逆向工程
- php - 如何仅显示未应用的类别?
- google-apps-script - 谷歌表格 - 如何从这个网站获取货币信息
- python - 在 bash 脚本中激活 python 虚拟环境失败并显示“sudo: source: command not found”
- php - 如何在 codeigniter 中禁用 ONLY_FULL_GROUP_BY?
- r - 为什么基础 R 中的 Date 类由双精度支持
- tensorflow - 启动 TensorFlow 会话时出现“CUDA_ERROR_INVALID_DEVICE:无效的设备序号”