首页 > 解决方案 > 如何在 Django 中识别没有登录功能的用户?

问题描述

我正在制作 Django 应用程序,访问者可以在没有登录功能的情况下回答问题。每个答案的数量将被计为“投票”,但我需要限制用户只回答一次问题。

我需要有这方面经验的人的帮助。

标签: djangodjango-templatesdjango-views

解决方案


您可以使用Django Sessions或尝试使用来自每个请求的元数据自行破解某些内容。

Django 会话

Django 完全支持匿名会话。会话框架允许您基于每个站点访问者存储和检索任意数据。它将数据存储在服务器端,并抽象了 cookie 的发送和接收。Cookie 包含会话 ID——而不是数据本身(除非您使用基于 cookie 的后端)。

请求元数据

在 Django 中的每个请求中,它都会携带一些名为的东西META,它携带有关请求的元数据。根据您使用 Django 视图(基于函数的视图或基于类的视图)的方式,您的访问方式会META有所不同。

Django 中的请求对象是一个键值对存储,或者基本上是一个字典。因此,在您将使用的基于函数的视图中。如果您要跟踪 IP 地址,则可以REMOTE_ADDRMETA. 但是,这并非万无一失,因为用户可能会使用 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对象中的某种数据组合来跟踪您的用户并为他们提供更好的体验。


推荐阅读