Adsenseコード

ラベル Python の投稿を表示しています。 すべての投稿を表示
ラベル Python の投稿を表示しています。 すべての投稿を表示

2017-11-24

MAMPでPythonを動かす




■Apacheの設定



以下の場所にあるファイルを編集します。

/Applications/MAMP/conf/apache/httpd.conf



ファイル内を「AddHandler」で検索し、以下の該当部分に「.py」を加え、Pythonファイルを対象にします。

#AddHandler cgi-script .cgi
AddHandler cgi-script .cgi .py



■test.py の作成



1行目に記述する python のインタプリタの場所を調べます。
ターミナルで以下を入力すると出てきます。

$ which python3
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3



上記を一行目に記載し、test.py ファイルを以下のように作成します。

保存場所
/Applications/MAMP/htdocs/host8004/Python.py



#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

print("Content-Type: text/html; charset=utf-8")
print("")
print("""
    <html>
    <head>
    <meta charset="utf-8">
    </head>
    <body>
    <h1>It works!</h1>
    <p>本文</p>
    </body>
    </html>
    """)

print('お疲れ様です。')



※ この例では Virtual hosts を設定しているので、「host8004」ディレクトリ内にファイルをおいています。

詳しくは
Mac上のMAMPでローカルにバーチャルホストを設定する方法
を参照ください。



■デバッグ



うまくいかない場合は、エラーログは apache_error.log にはき出されるので、
Finder で apache_error.log を検索し、原因を突き止めましょう。



■Permission denied


ファイルの実行権限がない時のエラーです。
以下のような log が記載されます。

... [error] [client 127.0.0.1] (13)Permission denied: exec of '/Applications/MAMP/htdocs/host8004/Python.py' failed, referer: http://127.0.0.1:8004/



この場合は、ターミナルで以下を実行します。

$ chmod 755 /Applications/MAMP/htdocs/host8004/Python.py

参考
MAMPでPython3をブラウザに表示
MAMPでPythonを動かす







2017-09-25

【Django入門】Mac環境にDjangoを導入する2(アプリケーション作成)




◆前回


前記事では、仮想環境を構築し、Djangoをインストール、
プロジェクトの作成とDB設定まで行いました。
【Django入門】Mac環境にDjangoを導入する1(環境構築とプロジェクト作成)


Djangoでは、プロジェクトーアプリケーション という構造をしています。
本記事では、作成したプロジェクトにアプリケーションを作成する作業を行います。




◆アプリケーションのインストール


■アプリケーションインストール


作成した仮想環境のディレクトリまで移動し、以下を実行します
myvenv user$ python3 manage.py startapp blog
$ tree -L 1 .
.
├── bin
├── blog
├── db.sqlite3
├── include
├── lib
├── manage.py
├── myapp
├── pip-selfcheck.json
└── pyvenv.cfg




■myapp/settings.pyファイルの編集


使用するアプリケーションをDjango上で定義します

```
# Application definition
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
)
```




■モデルの作成


blog/models.pyのファイルを以下のように編集します

```
from django.db import models
from django.utils import timezone

class Post(models.Model):
    author = models.ForeignKey('auth.User')
    title  = models.CharField(max_length=200)
    text   = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title
```




■マイグレーションファイルの作成


$ python3 manage.py makemigrations blog
Migrations for 'blog':
  blog/migrations/0001_initial.py
    - Create model Post




■マイグレーションの実行


$ python3 manage.py migrate blog
Operations to perform:
  Apply all migrations: blog
Running migrations:
  Applying blog.0001_initial... OK




■Django adminの設定


blog/admin.pyファイルを下記に変更します

```
from django.contrib import admin
from .models import Post

# Register your models here.
admin.site.register(Post)
```




■superuser (サイトの管理者) の作成


$ source ./bin/activate
$ python manage.py createsuperuser
Username (leave blank to use 'sko'): admin
Email address: # メールアドレスを設定
Password: # パスワードを入力
Password (again): # パスワードをもう一度入力
Superuser created successfully.




■動作確認


以下にアクセスし、設定したユーザ名とパスワードを入力して
ログインできることを確認します。
http://127.0.0.1:8000/admin/blog/

※もちろんサーバを起動しておくことを忘れないでください





◆ルーティングの設定


■myapp/urls.pyの設定


以下のように設定します

```
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('blog.urls')),
]
```




■blog/urls.pyの作成


blog/urls.pyという空ファイルを作成し、以下のように編集します

```
from django.conf.urls import url
from . import views

urlpatterns = [
    # 'http://127.0.0.1:8000/'へのアクセスは views.post_list を返す
    url(r'^$', views.post_list),
]
```




■Viewの作成


blog/views.pyを下記の内容で作成します

```
from django.shortcuts import render

# Create your views here.
def post_list(request):
    return render(request, 'blog/post_list.html', {})
```




■Templateの作成


Template用のディレクトリを作成します

$ mkdir blog/templates
$ mkdir blog/templates/blog


ここへpost_list.html を作成します

```
<html>
    <p>Hi there!</p>
    <p>It works!</p>
</html>
```




■動作確認


下記にアクセスします。
http://127.0.0.1:8000/


すると、下記の html ファイルを表示します
/Django_app/myvenv/blog/templates/blog/post_list.html




参考
https://qiita.com/yoshizaki_kkgk/items/c9a5299b77b99ff07e4a






2017-09-22

【Django入門】Mac環境にDjangoを導入する1(環境構築とプロジェクト作成)

◆対象

Pythonをやりたい! とりあえずメジャーなフレームワークで構築してみよう Djangoで構築 という方の手順を記録してみました。

■Pythonの動作確認

$ python3 --version Python 3.5.2 動作が確認取れない場合はPythonをインストールする

◆仮想環境構築

以下で仮想環境を構築する
仮想環境には virtualenv、venv がありますが、
virtualenv がデファクトスタンダードらしいです。


venvは、virtualenvみたいな機能を標準でもサポートしようぜ!
ということでPython3.3から追加された標準モジュールのようです。


下記では、venv で作成しています。



■ディレクトリの作成

まず、仮想環境を作成したいディレクトリまで移動します $ mkdir sample_app $ cd sample_app

■仮想環境を作成する

$ python3 -m venv myvenv

■ディレクトリが作成されたことを確認

$ ls myvenv

■treeにより作成されたディレクトリ内容を確認してみる

treeをインストールしていない場合はインストールする $ brew install tree treeによるディレクトリ内容を確認 $ tree -L 1 myvenv myvenv ├── bin ├── include ├── lib └── pyvenv.cfg

■Djangoインストール

myvenv user$ pip3 install Django==1.11.5

◆プロジェクト作成

■現在位置の確認

$ pwd /Users/#{myname}/Desktop/sample_app/myapp $ tree -L 1 . . ├── bin ├── include ├── lib └── pyvenv.cfg

■プロジェクトを作成する

$ django-admin startproject myapp . $ ls bin lib myapp include manage.py pyvenv.cfg $ tree -L 1 . . ├── bin ├── include ├── lib ├── manage.py ├── myapp └── pyvenv.cfg

■設定ファイル内のタイムゾーンを変更する

Vimを使って編集してみました $ cd myapp $ vim settings.py 以下の内容に変更します ``` # LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'ja' # TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Tokyo' USE_I18N = True USE_L10N = True # USE_TZ = True USE_TZ = False ```

■データベースの設定

SQLiteを使用する場合は myapp/settings.py の中に以下が記載されています。 MySQL、PostgreSQLを使う場合は応じて変更が必要 ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } ```

■DBのマイグレーション

SQLite3動作確認(macには予めインストールされている) $ sqlite3 -version マイグレーションの実行 $ ls bin lib myapp include manage.py pyvenv.cfg $ source ./bin/activate $ python manage.py migrate $ python3 manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying sessions.0001_initial... OK

◆動作確認

■サーバ起動

$ python manage.py runserver $ python3 manage.py runserver Performing system checks... System check identified no issues (0 silenced). You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. September 22, 2017 - 15:22:03 Django version 1.11.5, using settings 'myapp.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.

■動作確認

下記にアクセスします。 http://127.0.0.1:8000/ 参考 https://qiita.com/yoshizaki_kkgk/items/f3c79e38b802c7fc8863 https://qiita.com/maskedw/items/aaa2fd7abfd493cf2820 https://teratail.com/questions/64846 https://teratail.com/questions/82246

■次回記事

【Django入門】Mac環境にDjangoを導入する2(アプリケーション作成) http://shige-mon.blogspot.jp/2017/09/djangomacdjango.html

2017-09-21

XAMPPでPythonを動かす




■XAMPPの設定手順



「xampp」→「apache」→「conf」フォルダの「httpd.conf」ファイルに以下を追記

#
# For Python
#
AddHandler cgi-script .py
ScriptInterpreterSource Registry-Strict



■ソースファイルを配置する


以下の内容を「test.py」というファイル名で「xampp」→「htdocs」内に保存

#!C:\Python35\python.exe
# -*- coding: utf-8 -*-
print(“Content-Type: text/html\n”)
print(“Hello World”)
print(“<p>このようにして記述します</p>”)



補足: 1行目の「C:\Python35\python.exe」は、python.exeの場所と一致するように記述する
 私の場合は 「C:\Program Files (x86)\Python36-32\python.exe」 だった


「C:\Documents and Settings\[userName]\AppData\Local\Programs\Python\Python36-32\python.exe」 の場合もある



■XAMPPを起動


(ApacheとMySQLをStartボタンで起動)


ブラウザで以下に接続
http://localhost/test.py



参考
https://algorithm.joho.info/programming/sql-db/xampp-python-install/