Python Django 搭建网站并实现交互的几个步骤

Python 作为一门流行语言,用的人不少,但大多介绍都是用于爬虫,而且仅仅适用于个人使用,如何能够利用这个工具与他人进行交互,从而实现广泛的应用?本文提供一个简单的例子,基于Django。
Python下有许多款不同的 Web 框架。Django是最有代表性的一位。
一个简单的功能,Django配置相对简单,本人在某个程序中,发现需要实现一些功能还是需要注意很多实现,这里简单归几个注意点。
(本文中用python 3)
本文做一个简单的检查网站是否可达来作为例子。
【Python Django 搭建网站并实现交互的几个步骤】一、默认安装
安装教程可见:https://www.runoob.com/django/django-install.html,很简单。
这些有很多安装教程,就不在这里介绍了。
二、建立自己的网站
Django 创建自己的项目,使用管理工具 django-admin 即可。
django-admin 的命令如下:
django-admin startproject ipcheck:
创建完成后我们可以查看到python目录下有如下的一些目录:
ipcheck
|-- ipcheck (这个是子目录)
| |-- init.py
| |-- settings.py
| |-- urls.py
| |-- wsgi.py
|-- manage.py
为了方便,在ipcheck下再建立一个templates的目录,存放网页模板
同时创建一个网页文件 ipcheck.html (具体内容后面再说)
同时也在ipcheck下建立一个程序 ipcheck.py(具体内容后面再说)
ipcheck
|-- ipcheck (这个是子目录)
| |-- _init_.py
| |-- settings.py
| |-- urls.py
| |-- wsgi.py
| |-- ipcheck.py
|-- templates
| |-- ipcheck.html
| |-- wsgi.py
|-- manage.py
|-- db.sqlite3 (这个文件主要用于数据处理,本文不需要)
安装完成后,启动 网站 python manage.py runserver 0.0.0.0:8000
注意:
(1)runserver 是 manage.py 的功能参数
(2)0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号(也是默认值)。如果需要,也可以设置为其他端口,如8888、9999。
如下图表示正常启动,否则会出现错误:
Python Django 搭建网站并实现交互的几个步骤
文章图片

在浏览器输入你服务器的 ip(这里我们输入本机 IP 地址: 127.0.0.1:8000) 及端口号,如果正常启动,输出结果如下:
Python Django 搭建网站并实现交互的几个步骤
文章图片

下面就可以开始做我们的事情了。
三、建立自己的网站
这里先说明几个文件,在ipcheck下的各种.py这些python文件,是处理各种请求的后台软件:
_init_.py 告诉 Python 该目录是一个 Python 包,无须理会。
settings.py是配置文件,
urls.py 是进行url解释,需要根据程序要求进行配置
wsgi.py 用于兼容 WSGI 的Web 服务器入口,无须理会
其他程序就是可以自己来处理了
如果添加了ipcheck后(含ipcheck.py和ipcheck.html),再运行就会出现如下的界面,此时就通过访问 127.0.0.0:8000/ipcheck来浏览我们的程序了。
此时运行 127.0.0.1/admin 就会出现Django的默认登录界面
Python Django 搭建网站并实现交互的几个步骤
文章图片

四、ipcheck
目标:把ip地址或者网址输入,然后检查是否可以ping通。如下图:
Python Django 搭建网站并实现交互的几个步骤
文章图片

1、ipcheck.py 的代码
在templates 下,建立 ipcheck.html
主要是提供输入界面,可以输入地址或网址,然后检查地址是否返回值。
代码如下:

检查IP地址或网址 - 锐客网 请输入IP地址或网址(多网地址请用分号; 隔开) :

{% csrf_token %}
{{ rlt }}

由于 Django的默认配置中没有templates目录,所以首先要修改settings.py 文件中 TEMPLATES定义的路径(如果不改正确,会无法找到ipcheck.html),如下图:
Python Django 搭建网站并实现交互的几个步骤
文章图片

Python Django 搭建网站并实现交互的几个步骤
文章图片

然后就可以建立我们的处理程序 ipcheck.py 了,该程序应该存放在ipcheck目录下。
程序中应用的库多了一些,可以重新筛选一下。
# -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup import os from xml.sax.saxutils import unescapefrom django.http import HttpResponse from django.shortcuts import render_to_response from django.shortcuts import render from django.views.decorators import csrf from django.views.decorators.csrf import csrf_exempt@csrf_exempt# 首先定义ping检查程序,该检查方法会在无法ping通时返回时间很慢 def isPingOK(testserver):try: exit_code = os.system('ping '+testserver+' >nul') if exit_code : return False else: return True except Exception as e: return False# 接收POST请求数据并处理 def IPCheck(request): ctx ={} if 'IPAddr' in request.POST: ctx['rlt'] = request.POST['IPAddr'] s = ctx['rlt'] urls = s.split('; ') print('post='+s+'\n\r') ctx['rlt'] = '' for url in urls: print(url+'\n\r') isOK = isPingOK(url) if isOK: ctx['rlt'] += url+' ping OK ====' else: ctx['rlt'] += url+' ping error=====' else: ctx['rlt'] = "" rethtml = "ipcheck.html"return render(request, rethtml, ctx)

以上代码测试正常,运行 python manage.py runserver 0.0.0.0:8000,会提示已经正常
Performing system checks...System check identified no issues (0 silenced). November 05, 2019 - 11:02:10 Django version 2.1, using settings 'ipcheck.settings' Starting development server at http://0.0.0.0:8000/ Quit the server with CTRL-BREAK.

然后再浏览器中输入 http://127.0.0.1:8000/ipcheck
会出现如下界面
Python Django 搭建网站并实现交互的几个步骤
文章图片

点击检查网址,则出现如下结果:
Python Django 搭建网站并实现交互的几个步骤
文章图片

在国内,是无法访问google的,加上google,则结果如下:
Python Django 搭建网站并实现交互的几个步骤
文章图片

附录:
这个程序只适合练习,其中ping的速度很慢,显示也不漂亮,代码也有多处可以优化。有时在不同浏览器下回出现错误。
请大家检查并提出优化方案,本人后续加以改善。

    推荐阅读