Anaconda やめて PyDev に戻って Django REST

Django REST Framework を試そうと、AnacondaとSpyderでDjango REST 開発環境を整えた んだけれども、新調PCで環境をつくろうと思ったら、以下のようなエラーがでて、あれやこれやいろいろ対処してみたけど、どうにもこうにもならない。

C:\Programs\Anaconda3\python.exe C:\Programs\Anaconda3\Scripts\conda-script.py create --yes --json --mkdir --name webapp python=3.6 --override-channels --channel https://conda.anaconda.org/anaconda-fusion --channel https://repo.continuum.io/pkgs/pro --channel https://repo.continuum.io/pkgs/free --channel https://repo.continuum.io/pkgs/r --channel https://repo.continuum.io/pkgs/msys2: HTTP None None for url 
Elapsed: None

An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.
SSLError(SSLError(SSLError("bad handshake: Error([('asn1 encoding routines', 'ASN1_item_verify', 'EVP lib'), ('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",),),)

ので、Anacondaはあきらめて、PyDevに戻る

1.Django REST 環境用の venv を作成

Python3では、venv が最初から同梱されているため、django用の仮想環境を適当な場所に作成し、

>python -m venv c:\workspaces\venv\django

仮想環境を立ち上げる。

>cd c:\workspaces\venv\django\Scripts
(django) c:\workspaces\venv\django\Scripts>

2.Django REST 用のモジュールをインストール

仮想環境に、必要なライブラリをpipでインストール

(django) c:\workspaces\venv\django\Scripts>pip install Django
(django) c:\workspaces\venv\django\Scripts>pip install djangorestframework
(django) c:\workspaces\venv\django\Scripts>pip install markdown
(django) c:\workspaces\venv\django\Scripts>pip install django-filter

内容を確認

(django) c:\workspaces\venv\django\Scripts>pip freeze
Django==1.11
django-filter==1.0.2
djangorestframework==3.6.2
Markdown==2.6.8
pytz==2017.2

3.Eclipse と PyDevのインストール

3.1 Eclipseのインストール

https://eclipse.org/

ダウンロードしてインストール。

3.2 PyDevのインストール

http://www.pydev.org/

Eclipseを起動して、HELP – Install new software から、Add で PyDev - http://www.pydev.org/updates/ を追加し、ウィザードに従って、PyDevをインストールする。

pydev_django02

Window – Preference から、PyDev – Interpreters – Python Interpreters から、Newで、上記で作成した、仮想環境のPyton.exeをインタプリタに指定する。

pydev_django01

pipでライブラリを追加したら、この画面から、Apply でEclipseへ反映させる必要がある。

4.Djang プロジェクトの作成

新規プロジェクトで、Djangoプロジェクトを作成

pydev_django03

pydev_django04

Grammer Version を 3.6 、Interpreter を上記で作成したものに設定

5.Django REST用基本設定

5.1 基本設定

http://www.django-rest-framework.org/#installation

settings.py

INSTALLED_APPS = [
        :
    'rest_framework',
]
REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
    ]
}

urls.py

API情報を閲覧可能にしたい場合、ログイン/アウトの機能が必要になるだろう。その場合、ルート urls.py ファイルに以下を追加する

from django.conf.urls import url, include
from django.contrib import admin
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets

# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'is_staff')

# ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    
# Routers provide an easy way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

5.2 データベース作成

プロジェクトコンテキストメニュー - Django - Migrate

pydev_django05

5.3 adminユーザーを作成

(django) C:\workspaces\eclipse\workspace_django\django_api_lesson\django_api_lesson>python manage.py createsuperuser
Username (leave blank to use 'pppiroto'):
Email address: pppiroto@gmail.com
Password:
Password (again):
Superuser created successfully.

6. Django起動

プロジェクトコンテキストメニュー – Run As – PyDev Django

pydev_django06

6.1 動作確認

http://localhost:8000/

pydev_django07

http://localhost:8000/users/?format=json

pydev_django08

取り合えず、動作確認までできた。