初心者向けMEMO | ティア https://tiero.jp/magazine グローバル人材向けマガジン Tue, 27 Oct 2020 08:55:38 +0000 ja hourly 1 https://wordpress.org/?v=6.4.3 https://tiero.jp/magazine/wp-content/uploads/2019/02/cropped-cropped-favicon-32x32.png 初心者向けMEMO | ティア https://tiero.jp/magazine 32 32 Django dynamic urlsでのurl設定の注意点 https://tiero.jp/magazine/django-dynamic-urls/ Tue, 27 Oct 2020 08:54:13 +0000 https://tiero.jp/magazine/?p=3532 Djangoのダイナミックurlを使おうとしてReverse云々のエラーになったときに、気を付けたいポイントが、アプリのurls.pyに名前空間をしていないかどうか確認してみましょう。もし名前空間を指定している場合は、通 …

The post Django dynamic urlsでのurl設定の注意点 first appeared on ティア.]]>
Djangoのダイナミックurlを使おうとしてReverse云々のエラーになったときに、気を付けたいポイントが、アプリのurls.pyに名前空間をしていないかどうか確認してみましょう。もし名前空間を指定している場合は、通常の{% url ‘xyz’ %}ではなく、{% url ‘名前空間: xyz’ %}と指定する必要があります。気を付けましょう。

例 – 名前空間がabcの場合: {% url ‘abc: xyz’ %}

The post Django dynamic urlsでのurl設定の注意点 first appeared on ティア.]]>
Python: f-stringsの使い方・サンプルコード https://tiero.jp/magazine/python-fstrings/ Tue, 22 Sep 2020 09:23:03 +0000 https://tiero.jp/magazine/?p=3299 ある文字列に{}を用いて文字列を制御するf-string(フォーマット済み文字列リテラル)について学習しましょう。f-stringは説明がややこしいのですが、例をみればすぐ理解できます。 >>> a = …

The post Python: f-stringsの使い方・サンプルコード first appeared on ティア.]]>
ある文字列に{}を用いて文字列を制御するf-string(フォーマット済み文字列リテラル)について学習しましょう。f-stringは説明がややこしいのですが、例をみればすぐ理解できます。

>>> a = 'こんにちは'
>>> print(f'{a}、お元気ですか?')
こんにちは、お元気ですか?

例えば、朝昼夜等の時間に応じてあいさつ文を変えたい場合に、共通の「お元気ですか?」は固定して、その前に、「おはようございます」や「こんにちは」、「こんばんは」を入れたい場合、ベタ打ちでそれらを記述すのではなく、対象文字列の冒頭にfをいれて文字列全体を”で囲み、差し込みたい場所に{}を入れ、{}の中に変数名をいれる、それだけです。例えばECだと以下のサンプルはイメージしやすいかもしれないですね。こんな表現もできるわけです。

>>> product,price,inv='革財布','9,800円',3
>>> print(f'商品名:{product} \n価格:{price} \n在庫数量:{inv}')
商品名:革財布
価格:9,800円
在庫数量:3
The post Python: f-stringsの使い方・サンプルコード first appeared on ティア.]]>
UnicodeEncodeError: ‘cp932’ codec can’t encode character エラー対応 https://tiero.jp/magazine/python-cp932-codec-error-countermeasure/ Fri, 17 Apr 2020 15:31:37 +0000 https://tiero.jp/magazine/?p=2993 Pythonでスクレイピングをしたhtmlデータをローカルに保存する際に以下のエラーが発生した時の対処法。 UnicodeEncodeError: ‘cp932’ codec can’ …

The post UnicodeEncodeError: ‘cp932’ codec can’t encode character エラー対応 first appeared on ティア.]]>
Pythonでスクレイピングをしたhtmlデータをローカルに保存する際に以下のエラーが発生した時の対処法。

UnicodeEncodeError: ‘cp932’ codec can’t encode character ‘\xa9’ in position 42041: illegal multibyte sequence

原因はPCがwindowsであり、cp932とは、マイクロソフトがShift_JISを独自に拡張した文字コード。上記エラーは次のコードを指していた。

f.write(dl.text)

原因を突き詰めると、ファイルを開く際に、UTF-8 でエンコードでの記述設定をする必要があり以下の通り、encoding=”utf-8_sig”を付け足すことで解決が可能(一例)

f = open(filename, mode=”w”, encoding=”utf-8_sig”)

The post UnicodeEncodeError: ‘cp932’ codec can’t encode character エラー対応 first appeared on ティア.]]>
Pythonメモ:Pathlibのサンプルコード https://tiero.jp/magazine/python-pathlib/ Wed, 08 Jan 2020 09:26:14 +0000 https://tiero.jp/magazine/?p=2751 ■ 特定フォルダの中身を一覧取得し、ファイル(=フォルダ以外)を抽出する import pathlib # ファイルやパスを操作 path = pathlib.Path('.') # 現在のフォルダを関数pathに入れる …

The post Pythonメモ:Pathlibのサンプルコード first appeared on ティア.]]>
■ 特定フォルダの中身を一覧取得し、ファイル(=フォルダ以外)を抽出する

import pathlib  # ファイルやパスを操作

path = pathlib.Path('.')  # 現在のフォルダを関数pathに入れる
for item in path.iterdir():  # フォルダ&ファイル一覧を取得し、ひとつひとつアイテムを抽出
    if not item.is_dir():  # もしアイテムがフォルダではない場合、
        print(item)  #アイテムを表示する

 

■ 特定フォルダの中身を一覧取得し、その中からPNG画像だけ抽出する

import pathlib  # ファイルやパスを操作

path = pathlib.Path('.')  # 現在のフォルダを関数pathに入れる
for item in path.iterdir():  # フォルダ&ファイル一覧を取得し、ひとつひとつアイテムを抽出
    if item.match('*.png'):  # もしアイテムがフォルダではない場合、
        print(item)  #アイテムを表示する

 

■ デスクトップの特定フォルダのフォルダおよびファイルを取得する

import pathlib
def show_all_folders_files(path):
    for item in path.iterdir():
        if item.is_dir():
            show_all_folders_files(item)
        elif item.is_file():
            print(item)

path = pathlib.Path('C:\\Users\\YourName\\Desktop\\hogehoge')
show_all_folders_files(path)

 

The post Pythonメモ:Pathlibのサンプルコード first appeared on ティア.]]>
Pythonメモ:Windowsでファイル操作(Path指定時)でのエラー対応 https://tiero.jp/magazine/python-windows-path/ Wed, 08 Jan 2020 09:08:03 +0000 https://tiero.jp/magazine/?p=2748 相対Pathはうまくできたのに、絶対Pathを指定するとエラーになった際の対処法のひとつをご紹介します。悪さをしているのは、フォルダやファイルの階層の繋ぎを示すバックスラッシュ(windowsでは¥マーク)が原因であるこ …

The post Pythonメモ:Windowsでファイル操作(Path指定時)でのエラー対応 first appeared on ティア.]]>
相対Pathはうまくできたのに、絶対Pathを指定するとエラーになった際の対処法のひとつをご紹介します。悪さをしているのは、フォルダやファイルの階層の繋ぎを示すバックスラッシュ(windowsでは¥マーク)が原因であることが少なくありません。一般的なバックスラッシュひとつだけでは機能せず、バックスラッシュひとつではなく(\)、ふたつにすることで(\\)解決します。もしくは、通常のスラッシュ(/)にし直すかで解決できます。エラーなっている場合は一度試してみてください、それが原因かもしれません。

以下はデスクトップの特定フォルダのフォルダおよびファイルを取得するサンプルコードになります。

import pathlib
def show_all_folders_files(path):
    for item in path.iterdir():
        if item.is_dir():
            show_all_folders_files(item)
        elif item.is_file():
            print(item)

path = pathlib.Path('C:\\Users\\YourName\\Desktop\\hogehoge')
show_all_folders_files(path)

 

■ご参考

尚、Windowsの特定フォルダのPathを知りたい場合は、フォルダを右クリックして「プロパティ」をみると、「場所」という欄にパスが記載してあります。

The post Pythonメモ:Windowsでファイル操作(Path指定時)でのエラー対応 first appeared on ティア.]]>
Djangoメモ:DjangoデフォルトのフォームにCSSを適用する方法 – Pycharm https://tiero.jp/magazine/django-forms-css/ Tue, 17 Dec 2019 01:33:57 +0000 https://tiero.jp/magazine/?p=2741 Djangoデフォルトのフォームは見た目がよくないのでCSSでカスタマイズしたい人向けです。今回はPycharmでの操作です。まず、Pycharm画面上から次の通りアクセスします。 File > Settings …

The post Djangoメモ:DjangoデフォルトのフォームにCSSを適用する方法 – Pycharm first appeared on ティア.]]>
Djangoデフォルトのフォームは見た目がよくないのでCSSでカスタマイズしたい人向けです。今回はPycharmでの操作です。まず、Pycharm画面上から次の通りアクセスします。

File > Settings > Project hogehoge > Project Interpreter > 右上にある+ボタン > 検索ボックスにdjango-widget-tweaksを入力 > Install packagesをクリックで完了

Formのコードを書くファイルに(templatesのhtmlファイル等)、以下を追記

{% load widget_tweaks %}

Djangoのテンプレートタグのform上で、次のように追記:
例 bootstrapのCSS: form-controlを適用する場合(尚、ここではbootstrapの実装は割愛)

{{form.hogehoge|add_class:"form-control"}}
The post Djangoメモ:DjangoデフォルトのフォームにCSSを適用する方法 – Pycharm first appeared on ティア.]]>
Djangoメモ:既存データベースの初期化-migrationリセット https://tiero.jp/magazine/django-database-initialize-migration-reset/ Mon, 16 Dec 2019 04:29:02 +0000 https://tiero.jp/magazine/?p=2733 Djangoで当初データベースに設定したモデルの特定フィールドを削除した場合に、エラーが発生する対策の一例です。うまくいかない場合は試してみるとうまくいくかもしれません。今回の方法は既存データベースを初期化して、新たに設 …

The post Djangoメモ:既存データベースの初期化-migrationリセット first appeared on ティア.]]>
Djangoで当初データベースに設定したモデルの特定フィールドを削除した場合に、エラーが発生する対策の一例です。うまくいかない場合は試してみるとうまくいくかもしれません。今回の方法は既存データベースを初期化して、新たに設定したいデータベースで上書きする処理です。尚、前提となるデータベースは、Djangoにデフォルトで含まれているSqliteになります。

Migrationの履歴を削除するためにターミナル上で以下タイプをします。hogehogeは対象となるアプリ名です。

python manage.py migrate --fake hogehoge zero

以下タイプし、データベースシェルで行います。

python manage.py dbshell

まず、テーブル一覧から削除したいテーブル名を確認します。

sqlite> .tables

次に、対象データベースを削除します。hogehoge-dbは対象のデータベース名です。

sqlite> drop table hogehoge-db;

尚、models.py, forms.py, views.py, urls.py等において、上記削除したデータベースに関連する設定項目は削除等、アップデートして各ファイルを保存します。

シェルをCtrl+z(windowsの場合)で抜け出し、通常通りにmigrationします。

python manage.py makemigrations

データベースは存在するため、fakeコマンドでmigrateします。

python manage.py migrate --fake-initial
The post Djangoメモ:既存データベースの初期化-migrationリセット first appeared on ティア.]]>
Djangoメモ:templetesの設定 https://tiero.jp/magazine/django-templates-settings/ Tue, 10 Dec 2019 15:46:45 +0000 https://tiero.jp/magazine/?p=2708 ※前提はこちらの続きです。 アプリをプロジェクトのsettings.pyに追記 # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'd …

The post Djangoメモ:templetesの設定 first appeared on ティア.]]>
※前提はこちらの続きです。

アプリをプロジェクトのsettings.pyに追記

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'kintai', #★
]

★ このようにINSTALLED_APPSの一番最後にアプリの名前を追記します。

アプリフォルダ直下にtempatesフォルダを作成

作成したtempatesフォルダの中にアプリと同じ名前のフォルダを作成

フォルダ構造:プロジェクト名>アプリ名>tempates>アプリ名

テスト用としてindex.htmlを作成

tempatesフォルダの中のアプリと同じ名前のフォルダに入れます
試しに以下をコーディングしてみましょう(なんでもOK)。

<! doctype html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>{{title}}</title> #★
</head>
<body>
    <h1>{{keymsg}}</h1> #★
    <p>{{msg}}</p> #★
</body>
</html>

★置き換えたい箇所を{{}}(二重ひげかっこ)で囲み、中に任意の文字を入れます。この文字が置き換わります。

views.pyの対象の関数にrenderを設定

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    params = { 
        'title': '勤怠管理',   #★
        'keymsg': '成せばなる',
        'msg': 'とりまやってみよう' 
    }
    return render(request, 'kintai/index.html', params) #★★

★ テンプレファイルで書いた置き換え対象の文字を使います。例えば、titleとテンプレファイルに記載された箇所には勤怠管理という文字に置き換わる、という構図です。

★★ 第一引数はHttpRequestのインスタンスを指定、第二引数は対象のテンプレファイルを指定
尚、上記テンプレファイルのURLは、templatesフォルダ起点の書き方です
renderは、指定するテンプレファイルにデータ(ここではparams)を当て込んで返してね、という意味です。

ウェブサーバーで確認・完了

The post Djangoメモ:templetesの設定 first appeared on ティア.]]>
Djangoメモ:on_delete= models.CASCADEとは? https://tiero.jp/magazine/django_on_deletemodels-cascade/ Sun, 08 Dec 2019 02:36:44 +0000 https://tiero.jp/magazine/?p=2693 ForeignKey等で外部テーブルとモデル間を紐付ける際の処理。参照されたモデルを削除する際に、紐ついている先の関連モデルをどうしたいかをmodels.以降で指定する。主なパターンは、以下の通り。 CASCADE:関連 …

The post Djangoメモ:on_delete= models.CASCADEとは? first appeared on ティア.]]>
ForeignKey等で外部テーブルとモデル間を紐付ける際の処理。参照されたモデルを削除する際に、紐ついている先の関連モデルをどうしたいかをmodels.以降で指定する。主なパターンは、以下の通り。

CASCADE:関連するモデルもすべて削除する。

SET_DEFAULT:削除した際にデフォルトで設定した値が入る

SET_NULL: 削除した際にNULLが入る

PROTECT: 関連するモデルがあると削除できない

DO_NOTHING:文字通り何もしない

SET():独自の処理をできる

The post Djangoメモ:on_delete= models.CASCADEとは? first appeared on ティア.]]>
Djangoメモ:CSSが反映されない場合の対処方法 https://tiero.jp/magazine/django-css-error/ Tue, 03 Dec 2019 02:55:02 +0000 https://tiero.jp/magazine/?p=2687 Djangoでテーブルを装飾をしようとCSSを何回もいじれど全然変わらない。コードのどこかに原因があるのかと思い血眼になって探していましたが見つからず。理由は単純明快でブラウザのキャッシュでした。私はGoogleのクロー …

The post Djangoメモ:CSSが反映されない場合の対処方法 first appeared on ティア.]]>
Djangoでテーブルを装飾をしようとCSSを何回もいじれど全然変わらない。コードのどこかに原因があるのかと思い血眼になって探していましたが見つからず。理由は単純明快でブラウザのキャッシュでした。私はGoogleのクロームを利用しているので、以下の通りで解決しました。

  1. まずクロームのブラウザの右上にある点が縦に3つ並んでいるボタンをクリックします。
  2. 次に、「その他のツール」をクリックし、「デベロッパーツール」を選択します。
  3. 最後にブラウザの一番上の検索バーの左にある更新ボタンにカーソルを当てて、右クリックし、「キャッシュの消去とハード再読み込み」をクリックします。

解決です!

The post Djangoメモ:CSSが反映されない場合の対処方法 first appeared on ティア.]]>