常见问题解答
快速找到您需要的答案,如果找不到答案,请随时联系我们
共找到 742 个问题
通过 `{% extends "base.html" %}` 指令,子模板继承父模板(如 `base.html`)。父模板中使用 `{% block content %}` 等标签定义可被覆盖的“块”。子模板中使用同名的 `{% block content %}...{% endblock %}` 来填充这些块的内容。这使得保持网站布局一致并重用代码变得非常容易。
模板开发
2026-04-11
1. 使用 `safety` 或 `pip-audit` 检查 Python 依赖包中的已知漏洞。2. 使用 `bandit` 进行代码静态安全分析。3. 使用 OWASP ZAP 或 Burp Suite 进行动态应用安全测试。4. 定期运行 `python manage.py check --deploy`。5. 订阅安全公告,及时更新 Django 和所有依赖包。
安全防护
2026-04-11
1. 设置 `SESSION_COOKIE_HTTPONLY = True`(防止 JavaScript 访问)。2. 在 HTTPS 站点设置 `SESSION_COOKIE_SECURE = True`。3. 设置 `SESSION_COOKIE_SAMESITE = 'Lax'` 或 `'Strict'`。4. 使用强随机数作为 `SESSION_COOKIE_NAME`。5. 设置合理的 `SESSION_COOKIE_AGE`(会话过期时间)。6. 考虑将会话数据存储到缓存或数据库中,而非 cookie 中。
安全防护
2026-04-11
绝对不要将敏感信息硬编码在代码中或提交到版本控制系统。应使用环境变量管理。在项目根目录创建 `.env` 文件(列入 `.gitignore`),使用 `os.environ.get('SECRET_KEY')` 读取。或使用 `python-decouple`、`django-environ` 等库简化此过程。
安全防护
2026-04-11
通过使用 `django-csp` 配置 Content-Security-Policy。在 settings.py 或中间件中设置:`SECURE_BROWSER_XSS_FILTER = True`, `SECURE_CONTENT_TYPE_NOSNIFF = True`, `X_FRAME_OPTIONS = 'DENY'`(防点击劫持)。对于 HTTPS 站点,设置 `SECURE_HSTS_SECONDS` 等。
安全防护
2026-04-11
1. 使用 `django-axes` 或 `django-defender` 等应用,记录失败登录尝试,并在达到阈值后锁定 IP 或用户账户一段时间。2. 启用登录验证码(如 `django-simple-captcha`)。3. 实施双因素认证(2FA)。4. 记录所有登录日志以供审计。
安全防护
2026-04-11
在 settings.py 的 AUTH_PASSWORD_VALIDATORS 中配置密码验证器。Django 默认包含:检查密码与用户属性相似性、最小长度、常见密码列表、纯数字密码等验证。您还可以添加自定义验证器,要求密码包含大小写字母、数字和特殊字符,并设置密码过期时间。
安全防护
2026-04-11
1. **验证文件类型**:检查文件扩展名和 MIME 类型,使用类似 `python-magic` 的库。2. **限制文件大小**。3. **重命名文件**:不使用用户提供的文件名,使用生成的安全文件名。4. **设置正确权限**:确保上传目录不可执行。5. **存储位置**:考虑存储在非 Web 根目录,或通过视图授权访问。6. **病毒扫描**:集成杀毒软件。
安全防护
2026-04-11
Django 的 ORM(对象关系映射)通过使用参数化查询,从根本上防止了 SQL 注入。开发者应始终使用 ORM 提供的方法(如 `filter()`、`get()`)进行数据库查询,或使用 `cursor.execute(sql, [params])` 进行参数化原生查询,绝对避免使用字符串拼接来构造 SQL 语句。
安全防护
2026-04-11
1. **自动转义**:Django 模板默认对所有变量输出进行 HTML 转义。2. **慎用 safe**:仅在确认内容安全时使用 `|safe` 过滤器或 `mark_safe()` 函数。3. **输入验证**:在表单和序列化器中对用户输入进行严格校验。4. **CSP 头部**:配置 Content-Security-Policy HTTP 头,限制资源加载来源。
安全防护
2026-04-11
Django 内置了强大的 CSRF 保护。1. 在提交 POST、PUT、PATCH、DELETE 请求的表单中,必须包含 `{% csrf_token %}`。2. 相应的视图需要启用 `csrf_protect`(默认已通过中间件启用)。3. 对于 AJAX 请求,需要从 cookie 中读取 CSRF token 并设置在请求头 `X-CSRFToken` 中。
安全防护
2026-04-11
1. 创建 `setup.py` 或 `pyproject.toml` 定义项目元数据和依赖。2. 确保包含所有必要文件(代码、模板、静态文件、迁移、翻译)。3. 运行 `python setup.py sdist bdist_wheel` 构建分发包。4. 使用 `twine upload dist/*` 上传到 PyPI 或其他代码仓库。5. 编写清晰的 `README.md` 和文档。
插件开发
2026-04-11
主要通过以下几种方式:1. **信号(Signals)**:监听或发送信号。2. **扩展点**:提供基类让其他插件继承或重写。3. **设置(Settings)**:读取公共配置。4. **模板覆盖**:利用 Django 模板加载顺序覆盖默认模板。5. **中间件**:在请求/响应链中插入逻辑。
插件开发
2026-04-11
在插件的 `tests.py` 文件或 `tests` 包中,创建继承 `django.test.TestCase` 的测试类。使用 `setUp` 方法准备测试数据,编写以 `test_` 开头的方法测试各种功能。可以使用 Django 的测试客户端模拟请求。运行 `python manage.py test ` 执行测试。
插件开发
2026-04-11
在插件代码和模板中使用 `gettext()` 或 `_()` 函数标记需要翻译的字符串。运行 `django-admin makemessages -l zh_Hans` 等命令在插件目录下生成 `.po` 文件。翻译后运行 `compilemessages` 生成 `.mo` 文件。将 `locale` 目录打包进插件即可。
插件开发
2026-04-11
当修改了插件的 `models.py` 后,在项目根目录运行 `python manage.py makemigrations `。Django 会在插件的 `migrations` 文件夹中生成新的迁移文件。这个文件应包含在插件分发中,用户安装时运行 `migrate` 命令会自动应用。
插件开发
2026-04-11
在插件的 `apps.py` 的 `AppConfig` 类中定义默认配置字典。在插件代码中,通过 `django.conf.settings` 访问配置,并使用 `getattr(settings, 'YOUR_SETTING', default_value)` 提供默认值。用户可以在项目的 `settings.py` 中覆盖这些设置。
插件开发
2026-04-11
在插件的 `templatetags` 目录下创建 Python 模块(如 `my_tags.py`)。导入 `django.template.Library` 并创建一个 `register` 实例。使用 `@register.simple_tag` 或 `@register.inclusion_tag` 装饰器定义标签函数。在模板中通过 `{% load my_tags %}` 加载后即可使用。
插件开发
2026-04-11
在插件的 `admin.py` 文件中,导入自定义模型,然后使用 `admin.site.register(MyModel, MyModelAdmin)` 进行注册。`MyModelAdmin` 是一个继承自 `admin.ModelAdmin` 的类,可用于自定义该模型在后台的列表显示、过滤、搜索和表单行为。
插件开发
2026-04-11
1. 确保应用符合 Django 应用结构。2. 在 `apps.py` 的 `AppConfig` 类中,可以提供元数据如 verbose_name。3. 在插件的 `__init__.py` 中定义 `default_app_config` 指向该配置类。4. 提供 `setup.py` 或 `pyproject.toml` 以便安装。5. 在 DjacoreCMS 的插件管理界面启用或通过 `INSTALLED_APPS` 添加。
插件开发
2026-04-11