Djangoを使ってみた

Djangoの各モジュールでWEB処理したところ

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>templates test</title>
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>
親のテンプレート
親のテンプレート
{% extends "base.html" %}

{% block body %}

<p>This is {{app}} test.</p>
<h2>I am {{ccc}} for test.</h2>
<h3>His name is {{ddd}} from DataBase.</h3>
<p>
{% for i in num %}
{{ i }}<br>
{% endfor %}
</p>

{% if is_weekday %}
<p>Today is weekday.</p>
{% else %}
<p>Today is holiday.</p>
{% endif %}
{% endblock %}
子のテンプレート
子のテンプレート
# from django.shortcuts import render

# Create your views here.
from django.shortcuts import render
# from django.http.response import HttpResponse
from myapp.models import Person


def index_template(request):
    p = Person(last_name="Python", first_name="Taro")
    myapp_data = {
        'ddd': p.last_name,
        'app': 'Django',
        'ccc': 'studied',
        'num': range(10),
        'is_weekday': False,
    }
    return render(request, 'index.html', myapp_data)
myapp/views.py
myapp/views.py
from django.urls import path
from . import views

urlpatterns = [
    path('templates/', views.index_template, name='index_template'),
]
myapp/urls.py
myapp/urls.py
# from django.db import models

# Create your models here.
from django.db import models


class Person(models.Model):
    last_name = models.CharField(max_length=20)
    first_name = models.CharField(max_length=20)
    created = models.DateTimeField(auto_now_add=True)
    saved = models.DateTimeField(auto_now=True)
myapp/models.py
myapp/models.py

文字が小さく見ずらい時はWindows拡大鏡をお使いください。Windows・キー + 「+」(プラス・キー)(Windows・キーはキーボード左下、左から3~4番目のキー。抜けるにはWindows・キー + 「ESCキー」を押します)
Enlighterのコードは窓の右上アイコンの「<>」を押すと明るい表示になります。

base.htmlは親のtemplate fileであり、index.htmlは継承を行う子のtemplateである。views.pyはパラメータを渡したり、配列を渡したり、状況に応じて表示内容を変えるブーリアン定数を渡したりしている。
Database関連の受け渡しは嘘っぽい。勉強をして出直してきます。
(Samurai Blogを参照させていただきました。)

↑人気ブログランキングに参加しています。ポチっと1票を!

寝床から失礼!

寝床から失礼いたします。

Hey Siri

Hey Siri で電話もかけてみました。ちゃんとかかりました。

下の画像は後からPCにて編集後挿入しました。

やっと35,000にカウントがなりました。1日4,500という日もあったんですが。
やっと35,000にカウントがなりました。1日4,500という日もあったんですが。
↑人気ブログランキングに参加しています。ポチっと1票を!

全てiPhoneで処理いたしました。

iPhoneカーソル移動の練習

6月26日カーソル移動の練習
どんなことをしゃべったのかまたどんなふうに感じるのか?
この文章の内でカーソル移動の練習をするとなると大変難しいような文章もカーソル移動のための文章だとするとやっていて張り合いがない。(とりとめのない文章で済みません!)
例えば上の3行目の大変難しいと言う語を削除してみる。
→カーソルの打ち方の練習→ここ。
①カーソル位置を設定するには画面をながおしする。→ここの左にカーソルを持っていく練習をする。
②カーソルを入れたい場所にオレンジの縦バーを挿入する。
③だんだん要領がわかってきた。

↑人気ブログランキングに参加しています。ポチっと1票を!

iPhone内でGmailの送受信を行う

iPhone内でGmailの送受信を行う
① iPhoneの待ち受け画面でGmailのアイコンをタップ。
②画面の+マークをタップでメールの新規作成。
③宛先にsとhを入力自分自身とスマホのメールにメールを送信。
④件名と本文を音声入力する。
⑤添付または添付する写真の画像を撮り。
⑥画面上のほうのヤジリマークをタップメール本体が送信される。
⑦Gmailとスマホにメールが送られる。
⑧iPhone内の写真やスナップショットは従来通りメモデーターの中で行う。
上記操作によりスマホ上でGmail操作が完結する。
※ → iPhoneに登録されている写真や文章は添付できません。添付できるのはPC上のデータのみです。

今までGmailのハンドリングはPCのみで行ってきた。それがiPhoneでもできるようになり、ブログが簡単にアップできるようになった。凄い進歩である。ただし添付資料はiPhone内でやっているにもかかわらず、PC側の資料だけしかかなわない。iPhone内のものは今まで通りの操作が必要となる。

↑人気ブログランキングに参加しています。ポチっと1票を!

USB取り忘れメッセージ2

USBがさしっぱなしです( ゚Д゚)
お茶をこぼしても知らないぞ( ´∀`)
席にもういないダーッΣΣ(゚Д゚;)

これはかつて掲載した記事の再掲です。上のメッセージをUSBが残っているとき「お知らせ」として表示します。

#USBログオフ時メッセージプロンプト処理
#メッセージ文
$messagePath="C:\tabc\message.txt"
#ログ出力パス
$usbLOG="C:\tabc\ccc\usblogx.txt"
 
#--------------------------------------
#メッセージボックス
#--------------------------------------
function MessageBox([string]$p_value = "")
{
    [Void][Windows.Forms.MessageBox]::Show($p_value,"お知らせ","OK", "Warning")
}
 
 
$crUSB = Get-WmiObject -Class win32_usbhub | ? { $_.name -eq "USB 大容量記憶装置" } | ? { $_.status -eq  "OK" }
 
 
if ($crUSB) {
    write-output "$env:computername,$env:username,$(get-date)" >> $usbLOG
 
    #Windowsフォームのロード
    [Void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms");
 
    MessageBox $([String]::Join("`r`n", (Get-Content $messagePath)))
    
}
USB取り忘れ防止Log
USB取り忘れ防止Log

文字が小さく見ずらい時はWindows拡大鏡をお使いください。Windows・キー + 「+」(プラス・キー)(Windows・キーはキーボード左下、左から3~4番目のキー。抜けるにはWindows・キー + 「ESCキー」を押します)
Enlighterのコードは窓の右上アイコンの「<>」を押すと明るい表示になります。

↑人気ブログランキングに参加しています。ポチっと1票を!

Enlighterの注意書き

Windows・キー + 「+」(プラス・キー)(Windows・キーはキーボード左下、左から3~4番目のキー。抜けるにはWindows・キー + 「ESCキー」を押します)

文字が小さく見ずらい時はWindows拡大鏡をお使いください。Windows・キー + 「+」(プラス・キー)(Windows・キーはキーボード左下、左から3~4番目のキー。抜けるにはWindows・キー + 「ESCキー」を押します)
Enlighterのコードは窓の右上アイコンの「<>」を押すと明るい表示になります。

↑人気ブログランキングに参加しています。ポチっと1票を!

クラスとインヘリタンス

2019年5月22日の記事の再掲

今、PythonのProgrammingを思い出している。これは2019/5/22付の記事の再掲である。これらはオブジェクト・オリエンティッドのプログラムの必須機能である。内容は同記事を参照してください。

class Pet(object):
    def __init__(self, name, size):
        self.name = name
        self.size = size
    def petcall(self):
        print("Cannot burk")
    def run(self):
        print("running")
class Dog(Pet):
    def petcall(self):
        print("Bow wow")
    def run(self):
        print("running")
class Cat(Pet):
    def swim(self):
        print("cannot swimming")
    def petcall(self):
        print("Mew")
    def run(self):
        print("running")
class Turtle(Pet):
    def __init__(self, name, size, color):
        self.name = name
        self.size = size
        self.color = color
    def run(self):
        print("Just walking")

gardenPet = Pet("Mary", 160)
gardenPet.petcall()
gardenPet.run()
houseDog = Dog("John", 40)
houseDog.petcall()
houseDog.run()
nekoTheCat = Cat("Neko", 35)
nekoTheCat.swim()
nekoTheCat.petcall()
nekoTheCat.run()
tinyTheTurtle = Turtle("tiny", 10, "green")
print(tinyTheTurtle.color)
tinyTheTurtle.petcall()
tinyTheTurtle.run()

上のCode画面の右上隅の左から2番目のアイコン(コピー)をクリックし、ご自分の何らかのエディタにペイストすればPython Programが編集可能となります。

文字が小さく見ずらい時はWindows拡大鏡をお使いください。Windows・キー + 「+」(プラス・キー)(Windows・キーはキーボード左下、左から3~4番目のキー。抜けるにはWindows・キー + 「ESCキー」を押します)
Enlighterのコードは窓の右上アイコンの「<>」を押すと明るい表示になります。

↑人気ブログランキングに参加しています。ポチっと1票を!

Python Prog.の復習

最初は「N Queens problem」のコードである。

##!/usr/bin/env python3
# Modified this program by S.K on 2020/04/26
"""
N queens problem.

The (well-known) problem is due to Niklaus Wirth.

This solution is inspired by Dijkstra (Structured Programming).  It is
a classic recursive backtracking approach.
"""

N = 8                                   # Default; command line overrides

class Queens:

    def __init__(self, n=N):
        self.n = n
        self.reset()

    def reset(self):
        n = self.n
        self.y = [None] * n             # Where is the queen in column x
        self.row = [0] * n              # Is row[y] safe?
        self.up = [0] * (2*n-1)         # Is upward diagonal[x-y] safe?
        self.down = [0] * (2*n-1)       # Is downward diagonal[x+y] safe?
        self.nfound = 0                 # Instrumentation

    def solve(self, x=0):               # Recursive solver
        for y in range(self.n):
            if self.safe(x, y):
                self.place(x, y)
                if x+1 == self.n:
                    self.display()
                else:
                    self.solve(x+1)
                self.remove(x, y)

    def safe(self, x, y):
        return not self.row[y] and not self.up[x-y] and not self.down[x+y]

    def place(self, x, y):
        self.y[x] = y
        self.row[y] = 1
        self.up[x-y] = 1
        self.down[x+y] = 1

    def remove(self, x, y):
        self.y[x] = None
        self.row[y] = 0
        self.up[x-y] = 0
        self.down[x+y] = 0

    silent = 0                          # If true, count solutions only

    def display(self):
        self.nfound = self.nfound + 1
        if self.silent:
            return
        print('+-' + '--'*self.n + '+')
        for y in range(self.n-1, -1, -1):
            print('|', end=' ')
            for x in range(self.n):
                if self.y[x] == y:
                    print("Q", end=' ')
                else:
                    print(".", end=' ')
            print('|')
        print('+-' + '--'*self.n + '+')

def main():
    import sys
    silent = 0
    n = N
    if sys.argv[1:2] == ['-n']:
        silent = 1
        del sys.argv[1]
    if sys.argv[1:]:
        n = int(sys.argv[1])
    q = Queens(n)
    q.silent = silent
    q.solve()
    print("Found", q.nfound, "solutions.")

if __name__ == "__main__":
    main()


文字が小さく見ずらい時はWindows拡大鏡をお使いください。Windows・キー + 「+」(プラス・キー)(Windows・キーはキーボード左下、左から3~4番目のキー。抜けるにはWindows・キー + 「ESCキー」を押します)
Enlighterのコードは窓の右上アイコンの「<>」を押すと明るい表示になります。

N = 12 の時
N = 12 の時
N = 4 の時
N = 4 の時

だいぶ時間が空いた、もうPythonのプログラミングも忘れてしまった。徐々に思い出していこう。最初は「N Queens problem」のコードである。かの構造化プログラミングで有名なダイクストラの解である。

↑人気ブログランキングに参加しています。ポチっと1票を!

Enlighter version up

Code画面右上のアイコン「<>」をクリックすると背景の色が変わります。

例えば記事でEnlighterのcodeがあるが黒表示されている。これを今まで通りに明るい表示にするには、右側の上隅のアイコン「<>」をクリックすればよい。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#demo32.py session managed &amp; username get
from flask import Flask, redirect, request, render_template, url_for, session
 
app = Flask(__name__)
 
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('demo07.html')
 
@app.route('/program', methods=['GET', 'POST'])
def program():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('demo03.html')
 
@app.route('/program1', methods=['GET', 'POST'])
def program1():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('demo04.html')
 
@app.route('/program2', methods=['GET', 'POST'])
def program2():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('demo05.html')
 
@app.route('/param/&lt;parameter>')
def show_user_profile(parameter):
    if 'username' in session:
        html = render_template('demo07.html',name = str(parameter))        
        return html
    return 'You are not logged in. from param processing'
 
@app.route('/reset', methods=['GET', 'POST'])
def reset():
    session['username'] = 'monkey'
    return render_template('check31.html')
 
@app.route('/')
def func():
    if 'username' in session:
        html = render_template('demo07.html',name = str(session['username']))        
        return html
    return 'You are not logged in'
 
@app.route('/check', methods=['GET', 'POST'])
def check():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('func'))
    return render_template('check31.html')
 
@app.route('/',methods=['POST'])
def index():
 
    if (request.form['attr'] == 'need'):
 
        success = False
        name = request.form["username"]
        passwd = request.form["pass"]
        att1 = request.form['attr']
        my_message = "keyword処理は?"
    else:
        con1 = request.arg.get('_ControlID')
        pg1 = int(request.arg.get('_PageID'))
        act1 = request.arg.get('_ActionID')
        flg1 = request.arg.get('getFlg')
        html = render_template('demo07.html', con = con1, pg = str(pg1), act = act1, flg = flg1)        
        return html
 
    user_data = [{"id":"カリフラワー", "pass":"hanakyabetsu"},{"id":"西行法師", "pass":"masako"},{"id":"monkey", "pass":"kayochan"},{"id":"program1", "pass":"pass1"}]
 
    for i in range(0, 10):
        if user_data[i]["id"] == name:
            if user_data[i]["pass"] == passwd:
                success = True
                session['username'] = name
                return render_template('demo07.html',suc=success,name=name,pas=passwd,msg=my_message,att=att1)
            else:
                continue
        else:
            continue
    success = False
    return render_template('demo07.html',suc=success,name=name,pas=passwd,msg=my_message,att=att1)
 
@app.route('/logout')
def logout():
    session.pop('username', None)
    return redirect(url_for('func'))
 
app.secret_key = 'B0Qp89i/2xY F~XHH!jnVVLWX/,%QR'
 
if __name__ == '__main__':
    app.run(debug=True)

文字が小さく見ずらい時はWindows拡大鏡をお使いください。Windows・キー + 「+」(プラス・キー)(Windows・キーはキーボード左下、左から3~4番目のキー。抜けるにはWindows・キー + 「ESCキー」を押します)
Enlighterのコードは窓の右上アイコンの「<>」を押すと明るい表示になります。

↑人気ブログランキングに参加しています。ポチっと1票を!

複数のブロックを1つにまとめる?

地崎バラ園のバラ
  • 第1のブロックは画像の中を指定。
  • 第2のブロックはこのブロックで段落を指定。
  • これをテキストの範囲を指定する同じ要領で指定
  • どうなるか?

第1のブロックは画像の中を指定。
第2のブロックはこのブロックで段落を指定。
これをテキストの範囲を指定する同じ要領で指定。
どうなるか?

  • 段落1(段落4はインライン画像です)
  • 段落2
  • 段落3
  • 段落4 インライン画像用
  • 段落5
↑人気ブログランキングに参加しています。ポチっと1票を!