Django文件夹结构
Django folder structure
Django 应用程序 (1.7) 中的文件夹的良好结构(最佳实践)是什么?
我不确定将静态数据和文件上传放在哪里。
在我所有的项目中结果都不一样,但目前我有这样的东西(我遗漏了一些明显的folders/files):
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
是什么意思。 base.html
的 <head>
中的 <link rel="stylesheet" href="{{ STATIC_URL }}css/jquery.asmselect.css">
使用 Django 框架来呈现您的 .css 文件。为什么不使用那里的东西?省时省力。
汤米。
这里推荐书上的Django项目布局Two Scoops of 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 时间。或者,如果您必须在媒体文件夹中 ^ 并且出于安全原因,请验证上传的文件类型。
Django 应用程序 (1.7) 中的文件夹的良好结构(最佳实践)是什么? 我不确定将静态数据和文件上传放在哪里。
在我所有的项目中结果都不一样,但目前我有这样的东西(我遗漏了一些明显的folders/files):
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
是什么意思。 base.html
的 <head>
中的 <link rel="stylesheet" href="{{ STATIC_URL }}css/jquery.asmselect.css">
使用 Django 框架来呈现您的 .css 文件。为什么不使用那里的东西?省时省力。
汤米。
这里推荐书上的Django项目布局Two Scoops of 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 时间。或者,如果您必须在媒体文件夹中 ^ 并且出于安全原因,请验证上传的文件类型。