Django 搭建 Web服务器

  • 需求

    客户端上传一张图片到服务器,从服务器请求图片识别的结果。
     
  • Django 安装

    1、使用 pip 安装 Django:
    pip install Django==2.2.4

    2、检查是否安装成功:

    import django
    django.VERSION

  • 服务器搭建

    1、新建一个 project,名称为 mysite:

    django-admin startproject mysite

    如果创建成功, 我们会看到如下的目录结构 :

    mysite
    ├── manage.py
    └── mysite
        ├── __init__.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py

    2、进入外层 mysite目录,新建一个 app,名称为 learn:

    python manage.py startapp learn

    新生成的文件夹 learn目录结构为:

    learn
    ├── __init__.py
    ├── admin.py    后台相关的设置
    ├── apps.py     app相关的设置文件
    ├── migrations  数据库变更相关
    │   └── __init__.py
    ├── models.py   数据库模型相关
    ├── tests.py    单元测试
    └── views.py    视图逻辑

    3、将新定义的 app加到 settings.py中的 INSTALL_APPS中:

    # Application definition
     
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
     
        'learn',   # 注意添加了这一行
    ]

    4、在 views.py中定义视图函数:

    # -*- coding: utf-8 -*-
    
    from django.shortcuts import render
    from django.http import HttpResponse
    import random
    
    # Create your views here.
    
    def discern(request):#请求结果
    	return HttpResponse(random.randint(1,4))#模拟一个随机值
    
    def upload(request):#传输文件
    	if request.method == "POST":
    		File = request.FILES.get("file", None)
    		if File is None:
    			return HttpResponse("请选择需要上传的图片")
    		else:
    			with open(File.name, 'wb+') as  f:
    				for chunk in File.chunks():
    					f.write(chunk)
    			return HttpResponse("OK")
    	else:
    		return HttpResponse("请使用post方式上传")

    5、在 urls.py中定义视图函数相关的URL:

    from django.contrib import admin
    from django.conf.urls import url
    from django.urls import path
    from learn import views as learn_views
    
    
    urlpatterns = [
            path('admin/', admin.site.urls),
    	url('upload/',learn_views.upload,name='upload'),
    	url('discern/',learn_views.discern,name='discern'),
    ]

    6、启动服务:

    python manage.py runserver 0.0.0.0:8000

    启动成功显示信息如下:

  • 客户端实现

    import urllib.request as urllib2
    import requests
    
    def mypost(url_mul,file):
    	files = {'file':open(file,'rb')}
    	r = requests.post(url_mul,files=files)
    	return (r.text)
    
    if __name__ == "__main__":
    	#post请求上传文件
    	state = mypost(url_mul="http://127.0.0.1:8000/upload/",file="test.jpg")
    	print(state)
    	#请求返回结果
    	rs = urllib2.urlopen('http://127.0.0.1:8000/discern/')
    	data = rs.read().decode("utf-8")
    	print(data)

     

  • 运行客户端程序,新搭建的服务器应该会提示如下信息:

  • 修改 settings.py文件中的属性 APPEND_SLASH 为“APPEND_SLASH = False”,并注释掉 MIDDLEWARE 属性中的 'django.middleware.csrf.CsrfViewMiddleware',重新运行客户端程序,得到正确返回结果:

    修改 ALLOWED_HOSTS 属性为 “ALLOWED_HOSTS = ['*']”,使得可以通过真实的IP地址(非本地环回地址)访问Web服务端。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值