pycharm创建django项目linux部署

大家好,我是烤鸭:
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 datetime

from 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 json

from 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 path

from myapp import views

urlpatterns = [
    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 models

class 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转为list
    print(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-devel

yum install libmysqlclient-dev

  centos 7 已经没有 libmysqlclient-dev这个了,可以使用 

pip install mysqlclient

  安装多个pip,指定切换pip的ln软连接

 使用pip安装的时候,不是最新版的pip
 ls -al /usr/bin/pip  查看下这个软链接指向的文件
 重命名软连接 mv /usr/bin/pip /usr/bin/pip2.7.5
 ln -s /usr/local/bin/pip3.4 /usr/bin/pip
(/usr/local/bin/pip3.4是指定安装pip的路径)

报错如下:(没报错的跳过)

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
  File "/usr/libexec/urlgrabber-ext-down", line 28
    except OSError, e:
                  ^
SyntaxError: invalid syntax
  File "/usr/libexec/urlgrabber-ext-down", line 28
    except OSError, e:
                  ^
SyntaxError: invalid syntax
  File "/usr/libexec/urlgrabber-ext-down", line 28
    except 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't
    understand the python_requires classifier. Make sure you
    have pip >= 9.0 and setuptools >= 24.2, then try again:
    
        $ python -m pip install --upgrade pip setuptools
        $ python -m pip install django
    
    This will install the latest version of Django which works on your
    version of Python. If you can't upgrade your pip (or Python), request
    an older version of Django:
    
        $ python -m pip install "django<2"
    

进到项目目录,运行启动命令

$ nohup python manage.py runserver 0.0.0.0:8888 &

 

这时候访问服务器的8888端口就可以访问到了。

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烤鸭的世界我们不懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值