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/
此外,我更愿意看到网址类似于site.com/css/file.css
而不是site.com/static/css/file.css
,但不知何故,这似乎更复杂。怎么能实现呢?
答案 0 :(得分:2)
我在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">
<head>
中base.html
之类的内容使用Django框架来显示.css文件。为什么不用那里有什么?节省时间和精力。
托米。
答案 1 :(得分:1)
以下是对书籍Two Scoops of 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
并被视为三级项目布局,其中:
关于文件上传,我会将它们从浏览器直接上传到Amazons S3文件存储(或类似服务)。否则,您将占用带宽和CPU时间。或者如果您必须在媒体文件夹中^并出于安全原因请验证上传的文件类型。