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

Python 作为一门流行语言,用的人不少,但大多介绍都是用于爬虫,而且仅仅适用于个人使用,如何能够利用这个工具与他人进行交互,从而实现广泛的应用?本文提供一个简单的例子,基于Django。

Python下有许多款不同的 Web 框架。Django是最有代表性的一位。

一个简单的功能,Django配置相对简单,本人在某个程序中,发现需要实现一些功能还是需要注意很多实现,这里简单归几个注意点。
(本文中用python 3)
本文做一个简单的检查网站是否可达来作为例子。

一、默认安装
安装教程可见: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 搭建网站并实现交互的几个步骤_第1张图片
在浏览器输入你服务器的 ip(这里我们输入本机 IP 地址: 127.0.0.1:8000) 及端口号,如果正常启动,输出结果如下:
Python Django 搭建网站并实现交互的几个步骤_第2张图片
下面就可以开始做我们的事情了。

三、建立自己的网站

这里先说明几个文件,在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 搭建网站并实现交互的几个步骤_第3张图片

四、ipcheck

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

1、ipcheck.py 的代码

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

代码如下:


<html>
<head>
<meta charset="utf-8">
<title>检查IP地址或网址title>
head>
<body>
    <p>请输入IP地址或网址(多网地址请用分号;隔开) :<br>
    p>
    <form action="/ipcheck/" method="post">
        {% csrf_token %}

        <textarea cols=60 rows=10 name="IPAddr">
            www.baidu.com
        textarea>
        <p><input type="submit" value="检查网址">p>
    form>
 
    <p>{{ rlt }}p>
body>
html>

由于 Django的默认配置中没有templates目录,所以首先要修改settings.py 文件中 TEMPLATES定义的路径(如果不改正确,会无法找到ipcheck.html),如下图:
Python Django 搭建网站并实现交互的几个步骤_第5张图片
Python Django 搭建网站并实现交互的几个步骤_第6张图片
然后就可以建立我们的处理程序 ipcheck.py 了,该程序应该存放在ipcheck目录下。
程序中应用的库多了一些,可以重新筛选一下。

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup 
import os
from xml.sax.saxutils import unescape

from 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 搭建网站并实现交互的几个步骤_第7张图片
点击检查网址,则出现如下结果:
Python Django 搭建网站并实现交互的几个步骤_第8张图片

在国内,是无法访问google的,加上google,则结果如下:

Python Django 搭建网站并实现交互的几个步骤_第9张图片

附录:

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

你可能感兴趣的:(Python)