Django 新手需要注意的十个要点
新手建议,可以参考,第四点我还是没明白,看了别人的代码都是把各种业务逻辑写在 views.py
,怎么写到另外的地方。
1. 硬编码
像导航栏上的各种项目,需要进行跳转,或者静态文件,媒体文件,需要从开发环境部署上线 的时候就很麻烦。
1 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) |
STATIC_URL
是用来在模板里面载入静态的媒体文件,图片,音频,视频,用法如下:
1 | {% load staticfiles %} |
这个地方还是把图片文件放在了项目下的 static
文件夹,每个 App 单独一个文件夹。
1 | <!-- loading Bootstrap core CSS --> |
CSS, JS 文件设置,注意 css
前没有 /
,在 STATIC_URL
中已经有了斜杠。
第二个 STATICFILES_DIRS
我还没明白到底是干什么的,文档里面写的是设置不同的静态文件目录,不绑定给特定的 App 用(看了半天英文还是没有明白……不过这个是必须要设置的,不设置那就找不到 CSS 和 JS 文件了)。部署到线上的的话就要把 STATICFILES_DIRS
换成 STATIC_ROOT = "/home/chen/DjangoProjects/static"
,服务器上的文件夹。
2. URL
URL 设置 urls.py
放在每个 App 下面,除非 App 真的很小,功能很少那放在和 settings.py
一个文件夹下的 urls.py
也没问题,一旦 App 大了之后给每个 App 单独设置 URL,和 models.py
views.py
一起在 App 文件夹下,这样能够重用 App 到不通的项目中,在项目的 urls.py
中设置:
1 | url(r'^', include('garage.urls', namespace='garage')), |
这里的 namespace
是给在模板中直接调用 URL 用的,避免硬编码
1 | <a class="navbar-brand" href="{% url 'garage:index' %}">BookGarage</a> |
硬编码的问题我最早也纠结了很久,还在上线到服务器的时候掉到坑里了,还好也爬上来了。
3. 其他
其他建议比如:不要将项目名称包含在一引用代码中,这样不利于重用(我也没见过有人会这么做)。
部署的时候不要忘记将 DEBUG
设置改成 False
。
调试能够借助一些第三方工具获取更多的信息,django-debug-toolbar,前段时间是 Django 的十周年,调查显示这个工具用的人非常多。
还能用 Jinja2 这个模板系统替换自带的模板系统,作者是 Flask 的作者,也是 Flask 的一部分。
13 年的文章里面很多的链接都没用了,我也不知道这个到底是什么情况。