Django Webサーバの構築


  • クライアントがサーバに画像をアップロードし、サーバから画像認識を要求した結果. 
  • Djangoインストール1、pipを使用してDjangoをインストールする:
    pip install Django==2.2.4
    2、インストールに成功したかどうかを確認する:
    import django
    django.VERSION
    Django 搭建 Web服务器_第1张图片
  • サーバ構築1、新規プロジェクト名mysite:
    django-admin startproject mysite
    作成に成功すると、
    mysite
    ├── manage.py
    └── mysite
        ├── __init__.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py
    2、外層mysiteディレクトリに入り、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
    起動成功表示情報は以下の通りです:Django 搭建 Web服务器_第2张图片
  • クライアント実装
    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)
  • クライアントプログラムを実行すると、新しく構築されたサーバは次の情報を提示するはずです:Django 搭建 Web服务器_第3张图片
  • settingsを修正する.pyファイルのプロパティAPPEND_SLASHは「APPEND_SLASH=False」であり、MIDDLEWARE属性の「django.middleware.csrf.CsrfViewMiddleware',クライアントプログラムを再実行し,正しい戻り結果を得た:ALLOWED_を修正するHOSTS属性は「ALLOWED_HOSTS=['*']」であり、実際のIPアドレス(非ローカルループバックアドレス)からWebサービスにアクセスできるようにする.