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

14.2 安装项目需要的库

升级pip到最新版本:

pip install --upgrade pip

requests包:

pip install requests

mysql包和libmysqlclient包:

yum -y install mysql-devel

yum install libmysqlclient-dev

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

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

安装django:

pip install Django

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

$ nohup python manage.py runserver 0.0.0.0:8888 &

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





猜你喜欢

转载自blog.csdn.net/angry_mills/article/details/79249645