记一次部署和调试 Django 项目
Posted 南瓜__pumpkin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次部署和调试 Django 项目相关的知识,希望对你有一定的参考价值。
创建并运行项目
安装Django指定版本:pip install django==1.11.29
在Python中创建Django项目,选择 Vultualenv 和 python2
项目结构
该说不说有点丑奥
运行Django项目:python manage.py runserver
启动报错
djangoProject/djangoProject/settings.py", line 57, in <module>
'DIRS': [BASE_DIR / 'templates']
TypeError: unsupported operand type(s) for /: 'str' and 'str'
解决办法:修改 settings.py 57行的代码为 'DIRS': [str.format(BASE_DIR, '/templates')]
再次运行:python manage.py runserver,项目运行成功。
参考
Django实践:创建项目,debug–TypeError: unsupported operand type(s) for /: ‘str‘ and ‘str‘,分析与解决
尝试启动已有项目
项目路径错误
项目在部署服务器上运行得好好的,clone到本地部署时却发现项目路径发现了错误,无法引用 lib 目录下的文件。
from lib.public import md5, get_dnslog
ImportError: No module named public
解决办法1:注意,Django的项目根目录设置在 project/web/settings.py
,所以不需要傻傻地逐个修改 py 文件。
添加代码如下,仅供参考,成功解决本地的项目路径问题。
import os, sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, ".."))
解决办法2:这两天下载了virtualenv模块、pipreqs模块,导致 lib 库的重名带来找不到指定目录。发现之前无误的脚本,也开始报错,直接把 lib 模块删除,一步到位。
登陆跳转问题
项目在访问前需要先在功能平台登陆,然后跳转到功能平台的项目地址。本地部署项目,需要把这一步给删掉。
自定义的 /admin 可以访问,但访问项目定义的url时就会跳转到某个网站,然后报错501。从跳转的站点推测,应该是身份验证功能。
由于本地不需要身份验证,也为了方便,接下来需要找到身份验证的代码,然后注释掉。
1.尝试调试找到验证点
在Configuration添加参数 runserver 8081
, 调试 manage.py
文件。
下断点,开启Debug,单步调试,发现程序总是报错退出,但是直接执行又可以正常开启服务且不会报错。(猜测程序应该是执行到某一位置就开始监听,而不是继续单不执行,理论上绝对可以调试,不过需要比较多的时间)
在网络和星球查找Django项目调试资料,发现网络上的大多是如何配置,没有找到真正单步调试分析Django项目的,遂弃。
2.注释登陆验证代码-成功
通过查找资料,得知Django的两个重要文件:
文件 | 说明 |
---|---|
web/web/urls.py | 用于配置url的映射 |
web/app/views.py | 通过 function(request) 的方式编写网页 |
(1)打开 views.py 文件,搜索 login 发现 class _login_(object)
,把登陆相关操作的代码注释掉。
(2)python manage.py runserver 8081
启动项目,发现 urls.py 报错,把该文件登陆相关映射给注释掉。
再次启动项目,发现启动成功。注意,反复启动可能会报错 Error: That port is already in use,ps
查看进程然后 kill -9 pid
即可。
(3)启动成功后发现还是会进行身份验证,并且报错501。想到页面的编写就在 views.py,打开文件发现每个页面函数都有一行 @cookie_check()
,全部注释掉。
访问项目的页面,发现访问成功,此时项目的基本功能已经可以使用了。(努力没有白费,没有放弃本地部署终究有了收获)
参考
使用PyCharm配合部署Python的Django框架的配置纪实,对 urls.py 和 views.py进行了简单说明。
以上是关于记一次部署和调试 Django 项目的主要内容,如果未能解决你的问题,请参考以下文章