Python Web 框架 Django

要在PHP中调用 Python 脚本执行的结果,可以用 system(),exec()和 passthru() 函数。但是这些外部调用的方式容易造成系统安全问题。解决方案之一是使用 Python 创建一个Web 服务端,PHP 通过 Get 或 Post 来和服务端进行数据交互。

Django是老牌的强大的应用广泛的 Web 框架。

搬瓦工的服务器为例。

一、安装Centos8

《Python Web 框架 Django》

二、安装 Python3

1、下载压缩包

yum install wget
wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz  

2、YUM 安装编译 Python 所需要的开发包

yum -y install gcc zlib* libffi-devel  

3、解压 Python-3.8.3.tgz 文件

 
tar -zxvf Python-3.8.3.tgz

4、进入 Python-3.8.3 目录

cd Python-3.8.3/

5、编译

./configure --prefix=/usr/local/bin/python3
make
make install

6、查看系统默认 Python 的版本号

python3 -V

7、删除原来的默认的版本链接(如果有)

rm -rf /usr/bin/python3 

8、加入环境变量,这样就可以在任意地方执行

ln -s /usr/local/bin/python3/bin/python3 /usr/bin/python3
#后面某些步骤貌似必须python来执行命令
#ln -s /usr/local/bin/python3/bin/python3 /usr/bin/python

三、Django 安装

一般情况下 安装了python 就有 自动安装了 pip 模块。

ln -s /usr/local/bin/python3/bin/pip3 /usr/bin/pip3
pip3 install Django

四、Django实例

ln -s /usr/local/bin/python3/lib/python3.8/site-packages/django/bin/django-admin.py /usr/local/bin/django-admin

找个目录执行

django-admin startproject HelloWorld

此时会自动创建一个工程目录和相关文件
接下来我们进入 HelloWorld 目录输入以下命令,启动服务器:

python3 manage.py runserver 0.0.0.0:8000


这样就可以直接通过 8000 端口来访问了,但是想在是默认页面,我们需要来自己实现一些功能。

在先前创建的 HelloWorld 目录下的 HelloWorld 目录新建一个 views.py 文件,并输入代码:
HelloWorld/HelloWorld/views.py 文件代码:

from django.http import HttpResponse
 
def hello(request):
    return HttpResponse("Hello world ! ")

接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:

HelloWorld/HelloWorld/urls.py 文件代码:

from django.conf.urls import url
 
from . import views
 
urlpatterns = [
    url(r'^$', views.hello),
]

通过浏览器打开 http://127.0.0.1:8000
整个目录结构如下:

$ tree
.
|-- HelloWorld
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py    # url 配置
|   |-- urls.pyc
|   |-- views.py    # 添加的视图文件
|   |-- views.pyc   # 编译后的视图文件
|   |-- wsgi.py
|   `-- wsgi.pyc
`-- manage.py

我们也可以修改以下规则:

HelloWorld/HelloWorld/urls.py 文件代码:

from django.urls import path
 
from . import views
 
urlpatterns = [
    path('hello/', views.hello),
]

通过浏览器打开 http://127.0.0.1:8000/hello
如果要使用外网IP访问,决办法是:在Django项目下的settings.py里面修改

ALLOWED_HOSTS=['*']        *代表允许所有的主机

修改下views.py的代码,使其能接收 Get 参数。

from django.http import HttpResponse
import requests
 
def testf(e):
    url = e + '黑鸟博客'
    return url

def hello(request):
    request.encoding='utf-8'
    if 'id' in request.GET and request.GET['id']:
        message = request.GET['id']
    else:
        message =  'www.guihet.com'
    rid = message
    real_url = testf(rid)
    return HttpResponse(real_url)

这样就可以通过 http://127.0.0.1:8000/?id=test 来处理数据。

五、Django项目后台不挂断运行

0、安装epel(搬瓦工Centos8必须)

yum install epel-release

1、安装screen

yum install -y screen

2、新建一个screen

screen -S xiedi

这样会新开一个窗口,然后执行命令即可

python manage.py runserver 0.0.0.0:8000

3、重开一个窗口,列出所有screen进程,如下

[root@docker ~]# screen -ls
There are screens on:
       3029.xiedi    (Attached)

4、如果想链接上这个会话,执行命令即可

screen -r 3029

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

  1. 波仔 波仔 说道:

    :005: 哈哈哈太好了

  2. 趣知识 趣知识 说道:

    我也打算学学python

  3. 郑永 说道:

    路过,现在看这些有点头大,虽然对编程确实很感兴趣,喜欢折腾的话,乐趣还是挺多的。

  4. Jane博客 说道:

    想问一下想学习python处理表格数据,需要度长时间能学完

    1. 黑鸟 说道:

      又不专业搞这个,用到哪里学到哪里就可以,两周应该就有成果,上吧。