如何使用 django 在 developertools 中的 cookie 中添加键和值?

Posted

技术标签:

【中文标题】如何使用 django 在 developertools 中的 cookie 中添加键和值?【英文标题】:How to solve add key and value in cookies in the developertools using django? 【发布时间】:2021-12-10 03:49:33 【问题描述】:

这是一个社交网络网站。它是内置的python Django。我需要将用户登录部分添加到本地存储部分中存储的值中。

本网站有两种登录方式,一种是最终用户,另一种是公司

主要设置需要用户登录,此时需要key和value来存储本地存储

这是用户跨站点登录所必需的,例如 Facebook 用户已通过 Instagram 加入。

请帮我解决一下?我还需要修复会话中设置的 cookie

我在 models.py

部分下方添加了代码
  # Custom user
    class CustomUser(AbstractUser):
        """ Custom user model"""
        email = models.EmailField(unique=True, validators=[EmailValidator])
        is_company = models.BooleanField(default=False)
        is_employee = models.BooleanField(default=False)
        is_enduser = models.BooleanField(default=False)
        is_staff = models.BooleanField(default=False)
        slug = AutoSlugField(populate_from='username')
        objects = CustomUserManager()
    
        def __str__(self):
            return f"self.username"
    
        @property
        def group_name(self):
            """
            Returns a group name based on the user's id to be used by Django Channels.
            Example usage:
            user = User.objects.get(pk=1)
            group_name = user.group_name
            """
            return "user_%s" % self.id

*urls.py

app_name = '帐户' urlpatterns = [

path('login/company/', views.u_login, name='c_login'),
path('login/employee/', views.c_login, name='u_login'),

path('logout/', views.user_logout, name='logout'),
path('user-signup/', user_signup_view, name="user_signup"),
path('switch/<int:id>/', switch_user, name="user_switch"),
path('activate/<slug:uidb64>/<slug:token>/',views.activate_account, name='activate'),
path('change-pwd/<int:id>/', views.set_password, name='set_pwd'),

]

#员工复制登录

 def c_login(request):
     print("runned")
    if request.method == 'POST':

        form = LoginForm(request.POST)
        if form.is_valid():

            cd = form.cleaned_data
            print("cd",cd)
             user = authenticate(request,
                                username=cd['username'],
                                 password=cd['password'],
                                 remember_me=cd['remember_me'])
             if user is not None:
                if user.is_active:
                     login(request, user)

                     return HttpResponseRedirect(reverse('feed:user_feed', args=[request.user.profile.slug]))
                 else:
                     return HttpResponse('Disabled account')
             else:
                 messages.error(request, 'Invalid username or password')
        return render(request, 'account/u_login.html', 'form': form)

     else:
         form = LoginForm
     return render(request, 'account/u_login.html', 'form': form)

根据给定的流程,通过cookies检查登录会话并使用(唯一ID、姓名、电子邮件)设置加密令牌。

使用加密令牌在 Cookies 中设置详细信息 和 (ID、姓名、电子邮件)

【问题讨论】:

请帮助我们通过显示您尝试过的代码来帮助您,并尝试缩小问题的范围,而不是提出一个非常笼统的问题......为了清楚起见,尝试使用正确的语法。 【参考方案1】:

可能 django-allauth 是您所需要的。你需要的大部分东西都已经实现了。 https://django-allauth.readthedocs.io/en/latest/index.html

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

首先安装这些包,设置也包括会话。

https://docs.djangoproject.com/en/3.2/topics/http/sessions/

安装这个包和会话也需要添加

pip install djangorestframework-simplejwt

SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
SESSION_COOKIE_SECURE = False
ENCRYPTED_COOKIE_SERIALIZER = 'json'
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SAMESITE = 'None'
SESSION_COOKIE_SAMESITE = 'None'
COMPRESS_ENCRYPTED_COOKIE = True
ENCRYPTED_COOKIE_COMPRESSION_LEVEL = 1

【讨论】:

以上是关于如何使用 django 在 developertools 中的 cookie 中添加键和值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在django系统外使用django的ORM

如何使用 django 编写代码 [关闭]

如何在 Django 中使用模式?

如何使用 Django Rest Framework 在 Django 中进行操作日志记录

如何在 django 中使用 $.post?

[Django] 如何在Django中使用前端工具链