Cookie 是一种在 Web 开发中用于在客户端和服务器之间存储小型数据的机制。它通常用于跟踪用户的会话、存储用户首选项以及实现其他与用户相关的功能。
字典类型,不同页面的 Cookie 有不同的内容。
浏览器的缓存,网站的访问记录,让下次访问的时候能够直接的找出这个网站的地址,实现状态的保持。
浏览器访问 Django,响应的时候设置 Cookie。
# Project 项目中的 urls.py
from django.urls import path,include # 导入 Django 的 path 函数,用于配置 URL 路由,include 函数,用于将其它 URL 模式包含在当前 URL 配置中
# URL 配置列表,定义了网站的所有 URL 路径和对应的处理程序
urlpatterns = [
# 配置 URL 路由
path('', include('users.urls'))
]
# users 子应用的 urls.py
from django.urls import path # 导入 Django 的 path 函数,用于配置 URL 路由
from .import views # 导入当前目录下的 views.py 文件中的模块或视图函数
# URL 配置列表,定义 URL 路径和对应的处理程序
urlpatterns = [
# 配置 URL 路由,调用 views.py 中的 set_cookie 视图函数
path('set_cookie/',views.set_cookie)
]
# 子应用的 views.py
from django.shortcuts import render # 导入 Django 的 render 函数,用于渲染模板并返回响应
from django.http import HttpResponse # 导入 Django 的 HttpResponse 类,用于创建 HTTP 响应对象
# Create your views here.
# 定义视图函数
def set_cookie(request):
'''
设置 cookie 信息
:param request:
:return:
'''
response = HttpResponse('设置 cookie 成功!')
response.set_cookie('name','abc')
response.set_cookie('age','18')
response.set_cookie('gender', 'male')
return response
访问网站的其它页面时,Cookie 还在,关闭浏览器后再访问,Cookie 会清空。
# 设置 cookie 过期时间,是用秒进行计算,不要一起用
max_age=None # 最大多少秒过期
expires=None # 过期时间
# 子应用的 views.py
from django.shortcuts import render # 导入 Django 的 render 函数,用于渲染模板并返回响应
from django.http import HttpResponse # 导入 Django 的 HttpResponse 类,用于创建 HTTP 响应对象
# Create your views here.
# 定义视图函数
def set_cookie(request):
'''
设置 cookie 信息
:param request:
:return:
'''
response = HttpResponse('设置 cookie 成功!')
response.set_cookie('name','abc',max_age=3600)
response.set_cookie('age','18',max_age=3600)
response.set_cookie('gender', 'male')
return response
关闭浏览器后再访问其它页面时,设置时间的 Cookie 还在,没设置的会清空。
# users 子应用的 urls.py
from django.urls import path # 导入 Django 的 path 函数,用于配置 URL 路由
from .import views # 导入当前目录下的 views.py 文件中的模块或视图函数
# URL 配置列表,定义 URL 路径和对应的处理程序
urlpatterns = [
# 配置 URL 路由,调用 views.py 中的 set_cookie2 视图函数
path('set_cookie2/',views.set_cookie2)
]
# 子应用的 views.py
from django.shortcuts import render # 导入 Django 的 render 函数,用于渲染模板并返回响应
from django.http import HttpResponse # 导入 Django 的 HttpResponse 类,用于创建 HTTP 响应对象
# Create your views here.
# 定义视图函数
def set_cookie2(request):
'''
设置 cookie 信息
:param request:
:return:
'''
res = HttpResponse('设置 cookie')
res.set_cookie('username','abc')
return res
作用:作为验证。
# users 子应用的 urls.py
from django.urls import path # 导入 Django 的 path 函数,用于配置 URL 路由
from .import views # 导入当前目录下的 views.py 文件中的模块或视图函数
# URL 配置列表,定义 URL 路径和对应的处理程序
urlpatterns = [
# 配置 URL 路由,调用 views.py 中的 get_cookie 视图函数
path('get_cookie/',views.get_cookie)
]
# 子应用的 views.py
from django.shortcuts import render # 导入 Django 的 render 函数,用于渲染模板并返回响应
from django.http import HttpResponse # 导入 Django 的 HttpResponse 类,用于创建 HTTP 响应对象
# Create your views here.
# 定义视图函数
def get_cookie(request):
'''
获取 cookie 信息
:param request:
:return:
'''
print(request)
cookies = request.COOKIES
print(cookies)
return HttpResponse('获取 cookie')
会话(Session)是一种在 Web 开发中用于跟踪用户状态和存储用户数据的机制。它允许在不同的 HTTP 请求之间保持用户的身份和数据,并且比 Cookie 更安全和灵活。
保持网站中用户访问的具体信息,必须依托于 Cookie,保存在服务器的数据库(Redis)里面。
方便用户以后进行登录的状态保持。
字典类型
# Project 项目中的 urls.py
from django.urls import path,include # 导入 Django 的 path 函数,用于配置 URL 路由,include 函数,用于将其它 URL 模式包含在当前 URL 配置中
# URL 配置列表,定义了网站的所有 URL 路径和对应的处理程序
urlpatterns = [
# 配置 URL 路由
path('', include('users.urls'))
]
# users 子应用的 urls.py
from django.urls import path # 导入 Django 的 path 函数,用于配置 URL 路由
from .import views # 导入当前目录下的 views.py 文件中的模块或视图函数
# URL 配置列表,定义 URL 路径和对应的处理程序
urlpatterns = [
# 配置 URL 路由,调用 views.py 中的 set_session 视图函数
path('set_session/',views.set_session)
]
# 子应用的 views.py
from django.shortcuts import render # 导入 Django 的 render 函数,用于渲染模板并返回响应
from django.http import HttpResponse # 导入 Django 的 HttpResponse 类,用于创建 HTTP 响应对象
# Create your views here.
# 定义视图函数
def set_session(request):
'''
设置 session
:param request: 在请求参数中使用 session 方法,session是字典类型存储的
:return:
'''
request.session['username'] = 'tang'
request.session['age'] = 18
return HttpResponse('设置 session')
# users 子应用的 urls.py
from django.urls import path # 导入 Django 的 path 函数,用于配置 URL 路由
from .import views # 导入当前目录下的 views.py 文件中的模块或视图函数
# URL 配置列表,定义 URL 路径和对应的处理程序
urlpatterns = [
# 配置 URL 路由,调用 views.py 中的 get_session 视图函数
path('get_session/',views.get_session)
]
# 子应用的 views.py
from django.shortcuts import render # 导入 Django 的 render 函数,用于渲染模板并返回响应
from django.http import HttpResponse # 导入 Django 的 HttpResponse 类,用于创建 HTTP 响应对象
# Create your views here.
# 定义视图函数
def get_session(request):
'''
获取 session
:param request: 在哪里设置就从哪里拿
:return:
'''
username = request.session['username']
age = request.session['age']
print(username) # tang
print(age) # 18
return HttpResponse('获取 session')
# users 子应用的 urls.py
from django.urls import path # 导入 Django 的 path 函数,用于配置 URL 路由
from .import views # 导入当前目录下的 views.py 文件中的模块或视图函数
# URL 配置列表,定义 URL 路径和对应的处理程序
urlpatterns = [
# 配置 URL 路由,调用 views.py 中的 flush_session 视图函数
path('flush_session/',views.flush_session)
]
# 子应用的 views.py
from django.shortcuts import render # 导入 Django 的 render 函数,用于渲染模板并返回响应
from django.http import HttpResponse # 导入 Django 的 HttpResponse 类,用于创建 HTTP 响应对象
# Create your views here.
# 定义视图函数
def flush_session(request):
'''
清空 session 信息
:param request:
:return:
'''
request.session.flush()
return HttpResponse('xxx')
1、在 Ubuntu 终端输入命令查看 IP:
指路 Ubuntu 的安装
ip add
2、在 PyCharm 里点击”工具“,选择”部署“,选择”配置“(连接远程需要用 PyCharm 专业版);
3、点击“+”,选择“SFTP”;
4、添加名称后,点击“确定”;
5、点击“…”;
6、点击“+”;
7、主机里填之前查询到的 IP,用户名是 pyvip,密码是 pythonvip (Ubuntu 的用户名和密码),选择“保存密码”,点击“测试连接”;
8、点击”确定“;
9、点击”确定“;
10、点击”测试连接“,点击”确定“;
11、点击“自动检测”,会自动填入;
12、在 Ubuntu 的终端里输入命令;
查看当前路径下的文件:ls
查看当前路径:pwd
创建文件夹:mkdir 文件夹名称
13、点击“映射”,点击“部署路径”的“文件夹”,选择刚刚在 Ubuntu 里创建的文件夹;
14、点击“确定”;
15、在项目上右键点击,选择“部署”,选择“上传”,将本地的文件上传到 Ubuntu 的文件夹里面;
16、在 Ubuntu 里查看已经上传的文件。
进入文件夹:cd 文件夹名称
查看当前路径下的文件:ls
1、在 PyCharm 里点击“文件”,“设置”,找到“Python 解释器”,点击“添加解释器”,选择“SSH”;
2、选择“现有”,点击“…”;
3、选择想要的配置,点击“确定”;
4、点击“移动”,点击“下一步”;
5、点击“下一步”;
6、在 Ubuntu 的终端中输入命令:
创建虚拟环境:mkvirtualenv -p python3 文件夹名称
查看:pip list
安装 django:pip install django==3.1.7
7、选择“现有”,点击“…”;
8、找到“python3.6”,点击“确定”;
9、点击“同步文件夹”的“文件夹”;
10、把“远程路径”改成 /,点击“确定”;
11、点击“创建”;
12、点击“确定”;
13、点击“工具”,选择“部署”,选择“配置”;
14、点击“自动检测”;
15、点击“映射”,点击“部署路径”的“文件夹”,选择对应文件夹,点击“确定”;
16、点击“确定”;
17、在项目文件夹上右键点击,选择“部署”,选择“上传”;
18、点击“是”;
19、再运行,就是运行远程的代码了,点击“编辑配置”;
20、输入 IP 和端口号,点击“确定”;
21、在 settings.py 文件里修改以下位置代码;
# settings.py
# 设置允许的主机列表(ip 地址、服务器地址、Ubuntu 的 ip),留空表示允许所有主机
ALLOWED_HOSTS = ['*']
22、在 manage.py 里运行代码,就可以在远程地址访问了。
1、选择“工具”,选择“启动 SSH 会话”;
2、选择要连接的主机;
3、在终端输入命令。
pip install django-redis
# setting.py
# Redis 配置,缓存数据库
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/0',
'OPTIONS': {
'CLIENT_CLASS':'django_redis.client.DefaultClient',
}
},
'code': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1',
'OPTIONS': {
'CLIENT_CLASS':'django_redis.client.DefaultClient',
}
},
}
# default 库名是不能修改的
# SESSION_ENGINE='django.contrib.sessions.backends.cache_db' # 混合存储
# SESSION_ENGINE='django.contrib.sessions.backends.db' # 缓存指定采用的数据库类型 默认采用数据库
# SESSION_ENGINE='django.contrib.sessions.backends.cache' # redis
# SESSION_CACHE_ALIAS = "default" # 指定缓存的数据库
# session 的存储配置
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 将 sessin 保持到 redis 中
SESSION_CACHE_ALIAS = 'default' # 指定缓存的数据库
# 设置 session 失效时间,单位为秒
SESSION_COOKIE_AGE = 60*5
# Project 项目中的 urls.py
from django.urls import path,include # 导入 Django 的 path 函数,用于配置 URL 路由,include 函数,用于将其它 URL 模式包含在当前 URL 配置中
# URL 配置列表,定义了网站的所有 URL 路径和对应的处理程序
urlpatterns = [
# 配置 URL 路由
path('', include('users.urls'))
]
# users 子应用的 urls.py
from django.urls import path # 导入 Django 的 path 函数,用于配置 URL 路由
from .import views # 导入当前目录下的 views.py 文件中的模块或视图函数
# URL 配置列表,定义 URL 路径和对应的处理程序
urlpatterns = [
# 配置 URL 路由,调用 views.py 中的 cx_redis 视图函数
path('cx_redis/',views.cx_redis),
# 配置 URL 路由,调用 views.py 中的 cx_redis2 视图函数
path('cx_redis2/',views.cx_redis2)
]
# view.py
from django_redis import get_redis_connection # 用于获取已配置的 Redis 连接,并返回一个与 Redis 服务器的连接对象
def cx_redis(request):
'''
Redis 缓存示例
:param request: Django 请求对象
:return: HttpResponse
'''
# 获取 Redis 连接,'default' 是 Redis 缓存配置中的别名
conn = get_redis_connection('default')
# 打印连接对象,可选,用于调试和检查连接是否正常
print(conn) # Redis>>
# 设置一个名为 'age' 的键,对应的值为 100
conn.set('age', 100)
# 使用哈希数据结构设置 'k1' 键下的 'name' 字段的值为 '张三'
conn.hset('k1', 'name', '张三')
# 保存对Redis的修改(可选,取决于配置,有些情况下不需要手动保存)
conn.save()
# 获取 'age' 键的值并打印
age = conn.get('age')
print(age) # b'100'
# 获取 'k1' 键的所有字段及其对应的值,并打印
k1_data = conn.hgetall('k1')
print(k1_data) # {b'name': b'\xe5\xbc\xa0\xe4\xb8\x89'}
# 返回一个成功设置的消息
return HttpResponse('设置成功')
def cx_redis2(request):
'''
Redis 缓存示例
:param request: Django 请求对象
:return: HttpResponse
'''
# 获取Redis连接,'code' 是 Redis 缓存配置中的别名
conn = get_redis_connection("code")
# 打印连接对象,可选,用于调试和检查连接是否正常
print(conn) # Redis>>
# 设置一个名为 'age' 的键,对应的值为 100
conn.set('age', 100)
# 使用哈希数据结构设置 'k1' 键下的 'name' 字段的值为 '张三'
conn.hset('k1', 'name', '张三')
# 获取 session 中的 'name' 值(前提是需要在请求中有一个名为 'name' 的 session 值)
session = request.session.get('name')
print(session) # None
# 保存对 Redis 的修改(可选,取决于配置,有些情况下不需要手动保存)
conn.save()
# 获取 'age' 键的值并打印
age = conn.get('age')
print(age) # b'100'
# 获取 'k1' 键的所有字段及其对应的值,并打印
k1_data = conn.hgetall('k1')
print(k1_data) # {b'name': b'\xe5\xbc\xa0\xe4\xb8\x89'}
# 获取不存在的 'k2' 键的所有字段及其对应的值,并打印(会返回空字典)
k2_data = conn.hgetall('k2')
print(k2_data) # {}
# 删除 'k1' 键下的 'name' 字段
conn.hdel('k1', 'name')
# 打印删除后的 'k1' 键的所有字段及其对应的值('name' 字段已被删除)
print(conn.hgetall('k1')) # {}
# 返回一个成功获取的消息作为 HTTP 响应
return HttpResponse("获取成功")
记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~