大家好,我是烤鸭:
pytho部署web项目比java简单一点,虽然springboot内置了tomcat。
环境:
pycharm专业版python3.6
1.安装python
python下载:
https://www.python.org/downloads/
我使用的3.6版本
2.配置环境变量
path目录设置到python的安装目录
3.创建django项目
会在你生成目录的env下自动安装所需的环境和库
如下图:
4.说一下主要文件:
settings.py 配置文件
urls.py 路由
templates 静态资源
manage.py 主程序
wsgi.py 网关接口
5.创建自己的模块
打开终端:
python manage.py startapp myapp
6.注册模块
7.编写路由
在myapp下的view.py里编写index方法
import datetimefrom django.http import HttpResponse
from django.shortcuts import render# Create your views here.
def index(request):s = 'Hello World!'current_time = datetime.datetime.now()html = '<html><head></head><body><h1> %s </h1><p> %s </p></body></html>' % (s, current_time)return HttpResponse(html)
8.添加映射
在url里配置访问路径,类似java中某个controller的requestMapping
9.启动项目
上一张访问成功的图:
10.返回json数据
按照上面的写法,添加路由和映射
views.py加上方法:
import datetime
import jsonfrom django.http import HttpResponse
from django.shortcuts import render# Create your views here.
def index(request):s = 'Hello World!'current_time = datetime.datetime.now()html = '<html><head></head><body><h1> %s </h1><p> %s </p></body></html>' % (s, current_time)return HttpResponse(html)def indexJson(request):current_time = datetime.datetime.now()resp = {'code': '100', 'message': '成功','data': current_time.strftime('%Y-%m-%d %H:%M:%S')}return HttpResponse(json.dumps(resp), content_type="application/json")
urls.py增加映射:
from django.contrib import admin
from django.urls import pathfrom myapp import viewsurlpatterns = [path('admin/', admin.site.urls),path('index/', views.index),path('indexJson/', views.indexJson),
]
这样返回的就是标准的json格式的数据了
11.关于花生壳配置映射,但是无法访问
settings.py改
ALLOWED_HOSTS = ['*'
]
这样就允许所有的ip访问
12.数据库配置
13.创建数据库实体对象
编写models.py
from django.db import modelsclass users(models.Model):# 如果没有models.AutoField,默认会创建一个id的自增列a_id = models.IntegerField()name = models.TextField()create_time = models.DateTimeField()
views.py
def list(request):result_set = models.users.objects.all().values('a_id', 'name', 'create_time')data_list = result_set[:] # queryset转为listprint(type(list(data_list)))data = list(data_list)resp = {'code': '100', 'message': '查询成功' , "data": data}print(json.dumps(resp, cls=CJsonEncoder))return HttpResponse(json.dumps(resp, cls=CJsonEncoder), content_type="application/json")class CJsonEncoder(json.JSONEncoder):def default(self, obj):if isinstance(obj, datetime):return obj.strftime('%Y-%m-%d %H:%M:%S')elif isinstance(obj, datetime.date):return obj.strftime('%Y-%m-%d')else:return json.JSONEncoder.default(self, obj)
另外说一下:
关于返回列表数据,时间无法转json的问题,所以增加了
CJsonEncoder方法
14.linux部署
之前一直在找打包的方法,类似java打成jar包,可以直接java -jar
python好像不需要打包,直接把pycharm的打包文件夹复制到linux服务器上。
14.1 安装python
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
tar Jxvf Python-3.6.4.tar.xz
cd Python-3.6.4
./configure --prefix=/usr/local/python3
make && make install
因为我之前安装的版本是python2,现在是python3,但是python -v 还是python2.7
这是推荐一篇:
python2升级到python3
https://jingyan.baidu.com/article/86112f137e502a2736978763.html
上面文章的核心内容:
让系统默认使用Python 3.4.3
这里强调一下,读者在更加本经验操作,不是像白痴一样什么都不懂就操作。。。关于截图中删除/usr/bin/python的操作。请先使用ls -al /usr/bin/python 查看下这个软链接指向的文件。或者先将原来的python软连接重名 mv /usr/bin/python /usr/bin/python2.7.5以便后面好恢复。 上面我们已经将Python 3.4.3安装完成,但是我们进入shell后,查看python版本号: python -V,发现python还是2.7.5版本。升级python之后由于将默认的python指向3.4.3以后,yum不能正常使用,需编辑下yum的配置文件:vi /usr/bin/yum,这里需要先将原来的python软连接重名 mv /usr/bin/python /usr/bin/python2.7.5把文件头部的#!/usr/bin/python改成#!/usr/bin/python2.7.5保存退出即可;我们建立一个新的链接:ln -s /usr/local/bin/python3.4 /usr/bin/python检验python指向是否成功:python -V
14.2 安装项目需要的库
升级pip到最新版本:
pip install --upgrade pip
requests包:
pip install requests
mysql包和libmysqlclient包:
yum -y install mysql-develyum install libmysqlclient-dev
centos 7 已经没有 libmysqlclient-dev这个了,可以使用
pip install mysqlclient
安装多个pip,指定切换pip的ln软连接
使用pip安装的时候,不是最新版的pipls -al /usr/bin/pip 查看下这个软链接指向的文件重命名软连接 mv /usr/bin/pip /usr/bin/pip2.7.5ln -s /usr/local/bin/pip3.4 /usr/bin/pip
(/usr/local/bin/pip3.4是指定安装pip的路径)
报错如下:(没报错的跳过)
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfileFile "/usr/libexec/urlgrabber-ext-down", line 28except OSError, e:^
SyntaxError: invalid syntaxFile "/usr/libexec/urlgrabber-ext-down", line 28except OSError, e:^
SyntaxError: invalid syntaxFile "/usr/libexec/urlgrabber-ext-down", line 28except OSError, e:^
SyntaxError: invalid syntax
解决方案:
打开/usr/libexec/urlgrabber-ext-down,修改第一行,同上面百度经验的,
改为#! /usr/bin/python2.7.5
报这个错的:
error while loading shared libraries: libpython3.5m.so.1.0: cannot open shared object file: No such file or directory
解决方案:
https://www.cnblogs.com/sixiong/p/5711091.html
安装django:
pip install Django
This may be because you are using a version of pip that doesn'tunderstand the python_requires classifier. Make sure youhave pip >= 9.0 and setuptools >= 24.2, then try again:$ python -m pip install --upgrade pip setuptools$ python -m pip install djangoThis will install the latest version of Django which works on yourversion of Python. If you can't upgrade your pip (or Python), requestan older version of Django:$ python -m pip install "django<2"
进到项目目录,运行启动命令
$ nohup python manage.py runserver 0.0.0.0:8888 &
这时候访问服务器的8888端口就可以访问到了。