如何使用 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 中添加键和值?的主要内容,如果未能解决你的问题,请参考以下文章