讲一讲Django开发中遇到的坑

  • 2016-12-07
  • 1,311
  • 0

记录下用Django从开发环境到生产环境过程中遇到的问题和坑,分享给大家,也好做个备忘。

Django

Django是Python的web框架中用户最多、交流最多和文档最为齐全(以英文文档为主)的一个框架,让我忍不住去学习,于是撸了一个短链接平台。

在线demo:https://www.0ooo0.cn
Github地址:https://github.com/ioiogoo/SmartUrl

以下按照实际开发中的顺序介绍:

开发环境

创建一个Django项目django-admin startproject mysite,这个没问题,但是需要注意的是后面还会创建项目的app,分清楚项目和app的区别,一个项目中可以包含很多app。

然后创建一个apppython manage.py startapp app,创建好后,在app目录下创建templatesstatic文件夹,放置模板文件和静态文件,之后需要修改setting中的INSTALLED_APPS,TEMPLATES,STATIC_URL项目,根据需要修改DATABASES参数。如果需要显示中国时间的话,还需要修改时间参数,如下:

配置文件修改好之后,urls.py写路由规则,views.py写逻辑代码,models.py中定义数据模型,接下来就是按照写好的数据模型创建数据库。
python manage.py makemigrations app 创建app的迁移文件
python manage.py sqlmigrate app 0001 查看迁移文件的sql命令
python manage.py migrate 执行迁移命令

templates目录下放入模板文件,如果需要引用静态文件,如下:

模板文件如果需要用到render命令传入的Context,不能放在单引号内,只能用在双引号里面。

还有些能用到的命令,备忘
  • python manage.py createsuperuser 创建管理员帐号密码
  • manage.py check --deploy 检查代码
  • python manage.py runserver --insecure

生产环境

部署到生产环境中遇到的坑大部分都是引用静态文件带来的,setting设置里面debug设为False, 需要设置ALLOWED_HOSTS,不然运行不了的。还需要设置STATIC_ROOT = os.path.join(BASE_DIR, 'static')

然后执行python manage.py collectstatic将静态文件全部复制到根目录下static里。

Gunicorn + Nginx + Django 部署

Nginx需要静态文件的反向代理,其他设置跟Flask需要设置的一样

Gunicorn也差不多的设置,新建一个gunicorn.conf文件

gunicorn -c gunicorn.conf yourproject.wsgi:application 跑起来

Django DEBUG=False时静态文件404的问题

设置urls.py

大致就这样吧,比起Flask的轻便来,我觉得可能小项目的话还是使用Flask简单粗暴,不过Django的admin页面倒是挺人性化的,能够按需定制这点很好。

链接:https://www.ioiogoo.cn/2016/12/07/讲一讲django开发中遇到的坑/
本站所有文章除特殊说明外均为原创,转载请注明出处!

评论

还没有任何评论,你来说两句吧