在Django中,Session 是一种用来在用户的不同页面请求间持久化数据的技术。它允许开发者在用户会话期间存储和检索信息,而无需在每个请求中传递这些信息。以下是对Django项目搭建与Session使用详解的详细介绍:
1. **Django 项目创建**
- 使用 `django-admin startproject` 命令创建一个新的Django项目,例如 `django-admin startproject djangocommon`。
- 在项目目录下,使用 `python manage.py startapp` 创建应用,如 `python manage.py startapp commoncore`。
- 为了管理静态文件和模板,我们需要创建 `static` 和 `templates` 文件夹。`static` 用于存放CSS、JavaScript、图片等静态资源,`templates` 存放HTML模板文件。
2. **配置 settings.py**
- 设置 `STATIC_ROOT` 和 `STATIC_URL` 以管理静态文件。`STATIC_ROOT` 指定静态文件的收集路径,而 `STATIC_URL` 是静态文件的URL前缀。
- 配置 `STATICFILES_DIRS` 以添加额外的静态文件目录。
- 在 `TEMPLATES` 配置中,`DIRS` 字段指定模板文件的查找路径。
3. **设置 DATABASES**
Django 默认使用 SQLite 数据库,可以在 `settings.py` 的 `DATABASES` 配置中进行设置。如果需要使用其他数据库,如 MySQL 或 PostgreSQL,可以更改相应参数。
4. **添加应用到 INSTALLED_APPS**
在 `INSTALLED_APPS` 列表中添加新建的应用,如 `'commoncore'`。
5. **创建视图(views.py)**
在项目中创建视图文件,处理后端逻辑,并在 `urls.py` 中配置URL路由,使URL能映射到相应的视图函数。
6. **配置 Session**
- Django 内置了对Session的支持,首先在 `settings.py` 中确保 `'django.contrib.sessions'` 已经添加到 `INSTALLED_APPS`。
- Session 的存储方式可以通过修改 `SESSION_ENGINE` 设置,例如默认使用的是基于cookie的会话ID,数据存储在数据库中(默认为SQLite)。
- 可以通过 `SESSION_COOKIE_NAME`、`SESSION_COOKIE_AGE` 和 `SESSION_EXPIRE_AT_BROWSER_CLOSE` 等设置调整Session的相关行为,比如cookie名称、过期时间或是否关闭浏览器时自动失效。
7. **使用 Session**
- 在视图函数中,可以使用 `request.session` 对象来存取Session数据。例如,`request.session['username'] = 'John'` 存储用户名,然后在其他视图中通过 `request.session.get('username')` 获取。
- 注意,Django 默认只在用户有交互时更新Session,若希望每次请求都更新,可以调用 `request.session.modified = True`。
8. **中间件(Middleware)**
Django 中间件是一个轻量级、低级别的“插件”系统,可以全局改变Django的行为。在处理Session时,Django 自带的 `SessionMiddleware` 负责解析和设置Session相关的cookie。
总结,Django 项目搭建包括创建项目、应用、配置静态文件和模板路径,以及设置数据库。Session 的使用则涉及到配置、存储机制选择及在视图中存取Session数据。理解并掌握这些知识点对于开发基于Django的Web应用至关重要。