Django 应用程序 (1.7) 中的文件夹的良好结构(最佳实践)是什么?我不确定将静态数据和文件上传放在哪里。
在我的所有项目中,结果都不同,但目前我有这样的东西(我省略了一些明显的文件夹/文件):
project/
bin/
include/
...
src/
manage.py
main/
- settings.py
- urls.py
signup/
static/
static_/
+ css
+ img
+ js
static/
templates/
- index.html
- base.html
- ...
uploads/
而且,我更喜欢看到例如 url site.com/css/file.css
而不是 site.com/static/css/file.css
,但不知何故,这比看起来更复杂。如何做到这一点?
我在setting.py
中使用以下内容(目前使用 Django v1.6.8)
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
#TEMPLATE_DIRS = (os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "static", "templates"),)
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),)
这给了我一个文件夹布局
project/
manage.py
project_app/
- settings.py
- urls.py
someother_app/
- admin.py
- models.py
- views.py
static/
css/
javascript/
templates
admin/
someother_app/
- base.html
- index.html
media/
我不确定你说site.com/css/file.css
是什么意思. 类似于<link rel="stylesheet" href="{{ STATIC_URL }}css/jquery.asmselect.css">
在base.html
<head>
中使用 Django 框架来呈现您的.css文件。为什么不使用那里的东西? 节省时间和精力。
汤米。
以下是 Django 两勺 一书中对 Django 项目布局的推荐:
repo_root/
.gitignore
Makefile
docs/
README.rst
requirements.txt
django_project_root/
manage.py
media/
django_app_root/
static/
templates/
config/
__init__.py
settings/
urls.py
wsgi.py
并被视为三级项目布局,其中:
- 顶级 (repo_root):部署所需的高级文件
- 第二级(django_project_root):实际的 Django 项目
- 第三级(config):django 项目配置文件。
关于文件上传,我会将它们从浏览器直接上传到Amazons S3文件存储(或类似服务)。否则,您将占用带宽和 CPU 时间。或者,如果您必须在媒体文件夹 ^ 中,出于安全原因,请验证上传的文件类型。