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票を!

Djangoのインストール

PythonプログラムでWEBを開発するフレームワークであるDjangoを今日インストールした。これからはDjangoプロジェクトをPyCharmで開発していく。

テストプログラムによる結果表示
テストプログラムによる結果表示
ターミナルの実行結果(ログ)
ターミナルの実行結果(ログ)
Django等インストール後のパッケージ一覧
Django等インストール後のパッケージ一覧
FlaskとDjangoのモジュール一覧
FlaskとDjangoのモジュール一覧
↑人気ブログランキングに参加しています。ポチっと1票を!

Python-HTML-CSS with Enlighter in Gutenberg

19/11/26に掲載されたプログラム群をGutenbergとEnlighterを使って再掲します。

#!/usr/bin/python3      # app.py python
# -*- coding: utf-8 -*-
# app.py
 
from flask import Flask, redirect ,request,render_template
 
app = Flask(__name__)
 
@app.route("/check")
def check():
    return render_template('check.html')
 
@app.route('/',methods=['POST'])
def index():
    my_age = int(request.form["age"])
    my_name = request.form["name"]
    return render_template('index.html',age=my_age,name=my_name)
 
if __name__ == '__main__':
    app.run(debug=True)

上のコードはPython programです。

&lt;!DOCTYPE html>      &lt;!-- check.html -->
&lt;html lang="ja">
&lt;head>
    &lt;meta charset="UTF-8">
    &lt;title>年齢確認&lt;/title>
&lt;!--    &lt;link rel="stylesheet" type="text/css" href="{{url_for('static', filename='style.css')}}" />  -->
    &lt;link rel="stylesheet" type="text/css" href="static/css/style.css" />
&lt;/head>
&lt;body>
 
    &lt;form action="/" method="post">
        &lt;h1>年齢確認&lt;/h1>
        &lt;input type="text" name="name" placeholder="名前" required/>
        &lt;input type="number" name="age" placeholder="年齢" required/>
        &lt;button>年齢確認&lt;/button>
    &lt;/form>
 
&lt;/body>
&lt;/html>

上のプログラムはHTMLです。

&lt;!DOCTYPE html>  &lt;!-- index.html -->
&lt;html lang="ja">
    &lt;head>
        &lt;meta charset="UTF-8">
        &lt;title>18禁のサイト&lt;/title>
&lt;!--        &lt;link rel="stylesheet" type="text/css" href="style.css" />  -->
    &lt;link rel="stylesheet" type="text/css" href="static/css/style-04.css" />
        &lt;!--[if lt IE 9]>
        &lt;script src="http://html5shiv.googlecode.com/svn/trunk/html5.js">&lt;/script>
        &lt;![endif]-->
    &lt;/head>
    &lt;body>
    &lt;h1>射幸心を煽りまくるホームページ&lt;/h1>
    {% if age >= 18 %}
    {{name}}さんは18歳以上ですね。
    {% else %}
    {{name}}さんみたいな方はこんなHP見ちゃいけません?
    {% endif %}
 
    &lt;/body>
&lt;/html>

上のプログラムもHTMLです。

@charset 'utf-8';
body     {
    background: sandybrown;
    color: darkgreen;
    margin-left: 2m;
    margin-right: 2m;
}

上のコードはstyle.cssです。

@charset 'utf-8';
body     {
    background: violet;
    color: darkgreen;
    margin-left: 2m;
    margin-right: 2m;
}

上のコードはstyle-04.cssです。

文字が小さく見ずらい時はWindows拡大鏡をお使いください。Windows・キー + 「+」(プラス・キー)(Windows・キーはキーボード左下、左から3~4番目のキー。抜けるにはWindows・キー + 「ESCキー」を押します)

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

Gutenberg エディターにようこそ

Gutenbergを使ったExample.

Gutenberg を試してみよう

この新しいエディターのゴールは、WordPress へのリッチコンテンツの追加をシンプルで楽しくすることです。この投稿全体がコンテンツのパーツ—LEGO ブロックのようなもの—により構成されており、動かしたり操作できるようになっています。カーソルを動かすと、様々なブロックが枠線と矢印とともにフォーカスされます。矢印を押すとブロックをすばやく並び替えることができ、コピー & ペーストしているうちに内容が消えてしまう恐れがありません。

現在ご覧いただいているのがテキストブロックで、すべてのブロックのうち一番基本のブロックです。テキストブロックは、投稿内を自由に移動できる独自のコントロールがついています。

…例えば、右揃えのこれのようなものです。

見出しは別ブロックとなっており、コンテンツのアウトラインと構成に役立ちます。

百聞は一画像にしかず

画像とメディア取り扱いへの高い気遣いは、新しいエディターのメインフォーカスです。キャプションを追加したり、全幅にするのがより簡単で強力になっているのにお気づきいただけるでしょう。

美しい風景
テーマでサポートされていれば、画像ツールバーに「幅広」ボタンが表示されます。お試しください。

キャプションを選択、削除、編集してみてください。画像や他のテキストを間違って選択して、表示を台無しにしないよう気を使わずに済むようになりました。

「挿入」ツール

WordPress ができるすべてのことが、すばやく、同じ場所・インターフェイスで可能であると想像してみてください。HTML タグやクラスを理解したり、複雑なショートコード構文を覚える必要はありません。これこそが「挿入」ツール—エディター中にある (+) ボタン—の真髄で、すべての利用可能なコンテンツブロックを閲覧し、投稿に追加することができます。プラグインとテーマは独自のブロックを登録することができ、リッチな編集や公開の可能性を拡げます。

お試しいただくと、WordPress が投稿に追加可能でありながら、ご存知ではなかったものを見つけていただけるでしょう、以下はこの投稿が使用しているブロックの簡単なリストです。

  • テキストと見出し
  • 画像と動画
  • ギャラリー
  • YouTube、ツイート、他の WordPress 投稿などの埋め込み。
  • ボタンやヒーロー画像、区切りなどのレイアウトブロック。
  • もちろん、このようなリストも ^^

ビジュアル編集

ブロックの大きな利点は、それぞれの場所で編集し、コンテンツを直接操作できることです。引用ソースやボタン内テキストなどを編集するためのフィールドを持つのではなく、コンテンツを直接変更できます。以下の引用を編集してみてください:

このエディターは、リッチな投稿や固定ページの作成を簡単にする、新しい執筆体験を生み出そうとしています。また「ブロック」によって、現在はショートコード、カスタム HTML、外部埋め込みコード自動ディスカバリー機能が実現していることをより簡単にします。

マット・マレンウェッグ、2017

引用の​​ソースに対応する情報は、画像下のキャプションに似た別のテキストフィールドです。このため、ソースを選択、変更、または削除しても、引用自体の​​構造は保護されます。いつでも簡単に戻すことができます。

ブロックは、必要なもの何でもかまいません。たとえば、テキスト構成の一部として目立たない引用符を追加してもよいでしょう。または、巨大で装飾的なものを表示させることもできます。これらのオプションはすべて挿入ツール内で利用できます。

サイドバーのブロックインスペクターでスライダーをドラッグすると、ギャラリーのカラム数を変更できます。

メディア重視

新しい幅広全幅配置をギャラリーと組み合わせると、非常にメディアリッチなレイアウトをすばやく作成できます。

アクセシビリティは重要です — 画像の Alt 属性をお忘れなく。

全幅画像はかなり大きくなる場合もありますが、画像によってはそうする価値があることもあります。

フルサイズの画像
フルサイズの画像

上は2つの画像のみのギャラリーです。フロート調整を行うことなく、魅力的な見た目のレイアウトを簡単に作成することができます。またブロックを切り替えて、ギャラリーを個別の画像へ簡単に戻すこともできます。

あらゆるブロックでこれらの配置を選択できます。埋め込みブロックでも利用でき、ボックス外でもレスポンシブ対応しています:

静的または動的、装飾的またはプレーンなものなど、お好みのブロックを構築できます。こちらがプルクオートブロックです。

Code is Poetry

WordPress コミュニティ

追加ブロックを作成する方法を学んだり、プロジェクトに協力したりすることに興味がある場合は、GitHubリポジトリへ移動してください。


Gutenberg をテストしていただき、ありがとうございます !

👋

and_gate.pyのPython codeである

# coding: utf-8
import numpy as np


def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7
    tmp = np.sum(w*x) + b
    if tmp &lt;= 0:
        return 0
    else:
        return 1

if __name__ == '__main__':
    for xs in [(0, 0), (1, 0), (0, 1), (1, 1)]:
        y = AND(xs[0], xs[1])
        print(str(xs) + " -> " + str(y))

Enlighter SourcecodeでPython Programを表示しているところ。

アクセシビリティは重要です — 画像の Alt 属性をお忘れなく。

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

Gutenberg移行後の最初の編集

今までクラシックエディターのみでWordPressの記事をアップしてきた。それが2022年には使えなくなるという情報である。それなら早くからのGutenbergへの移行が得策ではないかと考えた。

Headerの例(h2)

今までクラシックエディターのみでWordPressの記事をアップしてきた。
それが2022年には使えなくなるという情報である。
それなら早くからの移行が得策ではないかと考えた。
【Gutenberg疑問事項】

  1. ダッシュボードの機能操作性は変わらないのか?大丈夫!
  2. 編集画面上の:(アイコン)からメニューを開き「オプション」を選択

・文書パネル
・パーマリンク
・カテゴリー
・タグ
・アイキャッチ画像
・枠
・ディスカッション

  1. すべてにチェックを入れてよいか?(自動的にすべてON)!
  2. フォーマット(標準・アサイド・画像・・・)の処理は?ブロックで!
  3. カテゴリー→親子関係はあるか?ある!
  4. タグ(操作方法は同じか?)同じ!
  5. アイキャッチ画像(どこに、大きさは?)今までと一緒!
  6. ブログランキングのバナーの取り付け方法は同じか?再利用でOK!
  7. 抜粋は?ある!
  8. 投稿の表示方法(プレヴューか?)そう!
  9. ダッシュボードのメニューのplaceの仕方は同じか?同じ!
  10. WP SyntaxHighlightに代わる「Enlighter Sourcecode」でOK!
  11. カスケードメニューがどうなるか?今までと同じ!
  12. 月別アーカイブの常時表示はできるか?すべて表示!

疑問点はまだまだある!。見切り発車をすべきか?すべき!

 文字のサイズやヘッダーと段落の違いは分かりました。 バナーの貼り付け方も分かりました。
 まだまだ各ブロックの使い方が分かっていません。
 今後は編集方法などをネットで調べて、自由自在に使っていこうと思っています。

Gutenbergで行こうと思っています。

散歩道に咲いた小さな花

#USBログオフ時メッセージプロンプト処理
#メッセージ文
$messagePath="C:\temp\usbmessage.txt"
#ログ出力パス
$usbLOG="C:\temp\test\usblog.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ログオフ時メッセージプロンプト処理「PowerShell(.ps1)」 CodeMirror Blocks 使用(Gutenberg移行に伴ってWP SyntaxHighlighterは使用中止)
↑人気ブログランキングに参加しています。ポチっと1票を!
#USBログオフ時メッセージプロンプト処理
#メッセージ文
$messagePath="C:\temp\usbmessage.txt"
#ログ出力パス
$usbLOG="C:\temp\test\usblog.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)))
    
}

WP SyntaxHighliterでPowershellのプログラムを表示させているところ。

Python,HTML,CSSの連携

下記コーディングはQiitaの記事を参考にさせていただきました。
-Python(app.py)

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# app.py

from flask import Flask, redirect ,request,render_template

app = Flask(__name__)

@app.route("/check")
def check():
    return render_template('check.html')

@app.route('/',methods=['POST'])
def index():
    my_age = int(request.form["age"])
    my_name = request.form["name"]
    return render_template('index.html',age=my_age,name=my_name)

if __name__ == '__main__':
    app.run(debug=True)

-HTML(check.html)

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>年齢確認</title>
<!--    <link rel="stylesheet" type="text/css" href="{{url_for('static', filename='style.css')}}" />  -->
    <link rel="stylesheet" type="text/css" href="static/css/style.css" />
</head>
<body>

    <form action="/" method="post">
        <h1>年齢確認</h1>
        <input type="text" name="name" placeholder="名前" required/>
        <input type="number" name="age" placeholder="年齢" required/>
        <button>年齢確認</button>
    </form>

</body>
</html>

-HTML(index.html)

<!DOCTYPE html>  <!-- index.html -->
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>18禁のサイト</title>
<!--        <link rel="stylesheet" type="text/css" href="style.css" />  -->
	<link rel="stylesheet" type="text/css" href="static/css/style-04.css" />
        <!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
    </head>
    <body>
    <h1>射幸心を煽りまくるホームページ</h1>
    {% if age >= 18 %}
    {{name}}さんは18歳以上ですね。
    {% else %}
    {{name}}さんみたいな方はこんなHP見ちゃいけません?
    {% endif %}

    </body>
</html>

-CSS(style.css)

@charset 'utf-8';
body	 {
	background: sandybrown;
	color: darkgreen;
	margin-left: 2m;
	margin-right: 2m;
}

-CSS(style-04.css)

@charset 'utf-8';
body	 {
	background: violet;
	color: darkgreen;
	margin-left: 2m;
	margin-right: 2m;
}

以上

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

demo32.pyのプログラム

demo32のプログラム

– 他の「demoxx.html」プログラムは省略します。
– 後日機会があったら当ブログに載せます。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#demo32.py sessin managed & 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/<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)

– 以上セッション処理プログラムでした。

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

demo30.pyの新構成

LAMP(Linux,apache,MySQL,PHP)のインストールを試みたが失敗。

昨日今日とSQLを両PCでインストールしてみた。

flaskをインストールしていたPCにはmssqlをインストールしていたが失敗。

これにLAMP(Linux,apache,MySQL,PHP)のインストールを試みたが失敗。

mssqlをremoveしたがこれも失敗、このPCでのインストールを断念した。

家内のPCを借りてMySQLをインストールしたがこれもまたpasswordを入力するところで失敗。これもまた断念することになった。

まる2日間費やしたが私にはSQLは不要の様だ。

そこでdemo29.pyに追加してdemo30.pyを構成してみたのがアイキャッチ画像のものだ。

demo30.pyのlogin処理が成功したのち/(スラッシュ)の入力で呼び出される

/program1で呼び出される

/program2で呼び出される

↑人気ブログランキングに参加しています。よろしければ1票を!

セッションの管理

SQLが手に入らないのでセッションの管理コードだけでも埋め込もうと、丸2日間かかって仕上げた。

セッションの管理

SQLが手に入らないのでセッションの管理コードだけでも埋め込もうと、丸2日間かかって仕上げた。
一番苦労したのは「Method Not Allowed」になってしまうことだった。
トラッパーやトレーサじみたコードを入れてアイソレートしていった。
テストした項目は
①login成功・失敗
②logout
③ルートへのジャンプ
④login後の他HTMLへのジャンプ。
⑤demo28.pyからのパラメータの引継ぎ
⑥login中の各振る舞い
⑦logout中のふるまい
など多岐にわたってテストした。

/login

login成功で’/’入力

データの引き渡し

logoutの状態で「/」を入力

demo28.py関連プログラム

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#demo28.py sessin managed
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(‘check28.html’)

@app.route(‘/reset’, methods=[‘GET’, ‘POST’])
def reset():
・・session[‘username’] = ‘zako’
・・return render_template(‘check28.html’)

@app.route(‘/’)
def func():
・・if ‘username’ in session:
・・・・html = render_template(‘demo03.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(‘check28.html’)

@app.route(‘/’,methods=[‘POST’])
def index():

・・success = False
・・name = request.form[“username”]
・・passwd = request.form[“pass”]
・・my_message = “「セッション処理のプログラムはどうでしたか?」”

・・user_data = [{“id”:”zako”, “pass”:”week_pass”},{“id”:”ikarochan”, “pass”:”kawaii”},{“id”:”yoshiko”, “pass”:”ok”},{“\
\
id”:”miku”, “pass”:”hatsune”}]

・・for i in range(0, 4):
・・・・if user_data[i][“id”] == name:
・・・・・・if user_data[i][“pass”] == passwd:
・・・・・・・・success = True
・・・・・・・・session[‘username’] = name
・・・・・・・・return render_template(‘index28.html’,suc=success,name=name,pas=passwd,msg=my_message)
・・・・・・else:
・・・・・・・・continue
・・・・else:
・・・・・・continue
・・success = False
・・return render_template(‘index28.html’,suc=success,name=name,pas=passwd,msg=my_message)

@app.route(‘/logout’)
def logout():
・・session.pop(‘username’, None)
・・return redirect(url_for(‘func’))

app.secret_key = ‘A0Zr98j/3yX R~XHH!jmN]LWX/,?RT’

if __name__ == ‘__main__’:
・・app.run(debug=True)
****************************************
<!DOCTYPE html> <!– check28.html –>
<html lang=”ja”>
<head>
・・<meta charset=”UTF-8″>
・・<title>Loginフォーム</title>
<!– <link rel=”stylesheet” type=”text/css” href=”{{url_for(‘static’, filename=’style.css’)}}” /> –>
・・<link rel=”stylesheet” type=”text/css” href=”static/css/style.css” />
</head>
<body>

・・<form action=”/” method=”post”>
・・・・<h1>Login</h1>
・・・・<input type=”text” name=”username” placeholder=”Username” required/>
・・・・<input type=”password” name=”pass” placeholder=”Password” required/>
・・・・<input type=submit value=Login>
・・</form>

</body>
</html>
****************************************
<!DOCTYPE html> <!– index28.html –>
<html lang=”ja”>
・・<head>
・・・・<meta charset=”UTF-8″>
・・・・<title>Login</title>
<!– <link rel=”stylesheet” type=”text/css” href=”style.css” /> –>
・・・・<link rel=”stylesheet” type=”text/css” href=”static/css/style-07.css” />
・・・・<!–&#91;if lt IE 9&#93;>
・・・・<script src=”http://html5shiv.googlecode.com/svn/trunk/html5.js”></script>
・・・・<!&#91;endif&#93;–>
・・</head>
・・<body>
・・・<h1>Login終了</h1>
・・・{% if suc %}
・・・<h1>Login OK</h1>
・・・<h1>Username is {{ name }}</h1>
・・・{% else %}
・・・Invalid Username or Password. Debug {{ name }},{{ pas }}
・・・{% endif %}
・・・</br>
・・・demo28.pyからのメッセージは:</br>
・・・{{ msg }}です。

・・</body>
</html>
****************************************
<!DOCTYPE html>
<html lang=”ja”>
<head>
・・<meta charset=”UTF-8″>
・・<link rel=”stylesheet” href=”/static/css/style-03.css”>
・・<title>Deep Learning second TEST</title>
</head>
<body>
・・<title>Hello from Flask</title>
・・{% if name %}
・・・<h2>{{ name }}さん!テンプレートからのHello Worldだよ!</h2>
・・{% else %}
・・・<h2>テンプレートからのHello Worldだよ!</h2>
・・{% endif %}

・・<p>
・・・<img src=”/static/images/plant_3.jpg” alt=”pic03″>
・・</p>

・・<script src=”/static/js/main.js”></script>
</body>
</html>
****************************************
(function(){
・・’use strict’;

・・alert(‘アラートですよ〜。’);

})();
****************************************

↑人気ブログランキングに参加しています。よろしければ1票を!