2019年4月29日 星期一

以Pycharm為例設定Django專案static資料夾


之前提到過template,

為了調整版面或者調整字型或者顏色等等,

會幫網頁加入CSS檔案,

舉凡css , js , img 等等這些檔案通常會找個固定的資料夾存放,

而這個資料夾在Django如何設定,

就是今天的主題了:

以Pycharm為例設定Django專案static資料夾






首先找到專案的settings.py,

確定

django.contrib,staticfiles

是否在INSTALL_APPS中


INSTALLED_APPS = [
     ..省略..    'django.contrib.staticfiles',]

如果專案有使用此套件而且DEBUG=True,

可直接在網址列確認該檔案是否已經在網站,

這在開發上比較方便,

但不適合正式上線使用,

所以正式上線時記得要設定為

DEBUG=False



設定靜態檔案資料夾很簡單,

將底下三個設定加到settings.py中即可

# Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/1.11/howto/static-files/
STATIC_URL = '/static/'STATIC_ROOT = os.path.join(BASE_DIR, 'common_static')
STATICFILES_DIRS = [
    'web_pay_v2/static',]


這三者有何不同呢?


STATIC_URL = '/static/'

設定對應到靜態檔案資料夾的網址,

Pycharm預設已經帶入此設定,

template引用時候帶入

{% load static %}




STATIC_ROOT

在指令行打上

python manage.py collectstatic

會將專案中的static檔案複製一份集中到此資料夾,

在apache或者nginx部屬專案時候使用



STATICFILES_DIRS

手動方式指定靜態檔案存放的資料夾,

要使用static檔案的時候,

系統會來找尋在此列表中的資料夾



如果要讓Django自動尋找各個app中的static資料夾,

在settings.py中必須有底下元件,

Pycharm預設並無此設定需要手動加入

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",    "django.contrib.staticfiles.finders.AppDirectoriesFinder")





2019年4月27日 星期六

Django專案template模板範例教學


如同之前介紹過的Django與MVC架構類似,

是所謂的MTV架構,

而View視圖已經介紹過,

緊接著利用上次新建的專案,

來進行今天的主題:

Django專案template模板範例教學


底下是今天範例的目標,

透過參數傳遞,

將時間這個區域變數傳遞到template中顯示.


首先到url.py先設定一個URL到views

from Firstweb.views import test_template


urlpatterns = [
    path('test_temp', test_template.sample1),

接著到對應的test_template.py設定視圖

from datetime import datetime
from django.shortcuts import render


def sample1(request):
    time_now = datetime.now()
    return render(request, 'sample_template1.html', locals())

render第一個參數request ,

主要傳遞GET/POST送出的資料,

第二個參數表示template的名稱,

而locals()表示要傳遞此處所有的區域變數,



這邊以Pycharm為範例新增一個template:

在左邊檔案樹狀結構中找到templates資料夾,

並在其上按滑鼠右鍵,

在選單中選擇新增一個html檔案,



是的,

Django的template就是一個html檔,

要顯示在網頁上的所有內容都寫在模板中



IDE軟體會自動帶入最基本的html標籤





{{ time_now }}
加入body中,

template本身有自己的語法,

變數的表示法以雙大括號包住

{{   變數 }}

設定好了就能執行

python   manage  .py   runserver

或者

按下IDE軟體的執行按鈕,

就能在瀏覽器中看到呈現的時間

2019年4月26日 星期五

[影視戲劇]時空線索


今天要來介紹一部老片,

片名為 :

時空線索

上映日期為2006年11月,

影片一開始就是描述在郵輪在早上十點五十分發生爆炸,

而男主角道格就是奉命來此調查此爆炸案,



 後來發現女主角克萊兒屍體,

檢查過後發現,

該女子與爆炸案原因或許有關係,

後來調查人員請道格觀看四天前的監視影片,

想藉此找出兇手,

觀看過程中,

道格發現監視畫面中的女主角能夠感受到遭受監控,

以雷射筆試探才發現,

此監視畫面是經過蟲洞觀看四天前的現實世界影像,


這下道格就坐不住了,

雖然已經透過觀看影像抓到兇手,

他認為既然可以送紙張回過去,


那何不送人回去阻止爆炸,

於是親身體驗了下,

蟲洞傳送,

最後雖阻止爆炸,

但自身卻犧牲了,




故事當然不是這樣就結束了,

此片是提及平行宇宙的影片之一,

由於現在的道格回到過去阻止了爆炸,

也救了原本應該死去的女主角,

時間流向因此出現分岔,

平行宇宙也因此產生,

雖說回到過去的道格死去,

但在該時空中的道格還是活跳跳的,

英雄救美還算是成功的,



有興趣的看官可以找來觀看,

算是一部合情合理的科幻片,

整體還是不賴的






2019年4月25日 星期四

[影視戲劇]九號房間(Room No.9)


今天要來推薦一部影片,

九號房間(Room No.9)


劇中各個角色都跟34年前的謀殺案有關係,

而因為該案被判死刑的犯人在一次巧合中,

與號稱訴訟勝率百分百的女主角尹智海伊交換靈魂,


始作俑者,

就是這台沒插電也會亮的去顫器,


因為交換靈魂獲得出獄機會的死刑犯張華裟,

出獄之後就開始為自己的清白奔波,


除了為自己洗刷罪名以外,

還要讓34年前欺騙她的戀人秋榮培付出代價,


男主角奇佑鎮,

除了扮演女主角的男朋友以外,

也是34年前遭殺害的奇山之子,

卻一直與殺父仇人兄弟相稱,


吳奉森警察是沒薪水也照樣抓犯人的好警察,

案情在他緊緊咬住不放中,

一步步解開真相


費了一番曲折,

男主角還差點被交換靈魂,

在臨死前還給張華裟一個清白




這詭異的去顫器,

沒插電都能發光,

不愧為靈魂交換的好機器




2019年4月23日 星期二

筆電安裝Ubuntu後Touchpad不能動


上次提到過安裝Ubuntu到筆電上出現ACPI Error,

筆電安裝Ubuntu可說是狀況一堆,

今天就來告訴大家

筆電安裝Ubuntu後Touchpad不能動

的解決方式


首先到終端機打上

less /proc/bus/input/devices

先查詢下Touchpad是否有在列表中,

如果沒有那後續也不必繼續了,

因為Ubuntu找不到該裝置,


 接著打上

sudo gedit /etc/default/grup

可看到如底下畫面




找到GRUB_CMD_LINE_LINUX_DEFAULT,

將"quiet splash"改為"i8042.reset quiet splash"後,

存檔離開,

接著執行

sudo update-grub

然後重新開機,

就能試驗看看Touchpad能否正常工作了




2019年4月22日 星期一

筆電安裝Ubuntu出現ACPI error無法進入系統

安裝Ubuntu時,

系統卡在歡迎畫面不動,

按ESC觀看Log訊息可看到如底下所示,

今天就來教大家解決

筆電安裝Ubuntu出現ACPI error無法進入系統

詢問Google大神後得知,

此問題發生原因在於安裝的Ubuntu沒有內建Nvidia 10系列的顯卡驅動程式所致,

所以會有ACPI Error


而解決的方法也很簡單,

在開機選單中找到

install ubuntu

按下e  進入開機選項編輯

在  linux開頭的這一行最後面加上   acpi=off

(此範例中加在--- 的後方)


按 ctrl + x 開機

就能夠解決因為ACPI Error造成的問題,



如果安裝完畢以後,

無法進入系統也不必緊張,

同樣在開機選單找到

Ubuntu 開機選項,

在上面按e

同樣在linux開頭的命令行最後加上 acpi=off,

進入系統後,

到終端機打上

sudo add-apt-repository ppa:graphics-drivers/ppa

sudo apt-get update

sudo apt install nvidia-390

安裝完驅動程式即可











2019年4月21日 星期日

windows10設定個人化桌面


window10的桌面是可以讓使用者自行設定的,

只要在桌面上按下滑鼠右鍵,

就會顯示如下圖所示的選單,

選擇個人化就能進入設定畫面,

之前提過Windows10 的檔案搜尋,

今天就來教大家

windows10設定個人化桌面



背景設定主要有三個功能,

圖片   ,    純色     以及     幻燈片秀,

預設為圖片,


如同畫面所示,

圖片就是讓使用者能夠選擇喜歡的圖片作為背景圖片,

windows10   本身內建幾個範例圖片供選擇,

都不喜歡可以選瀏覽自行選擇,

顯示的方式有

每個顯示方式都呈現不同的畫面,

可選擇自己喜愛的方式顯示圖片




如果不喜歡太花俏的圖片,

也能夠以純色作為背景,

系統同樣提供幾個範例顏色供選擇,

都不喜歡可以選自訂色彩自行調色

最後則是幻燈片秀,

其實這個跟圖片只有一個差異,

就是每隔一段時間更換一次圖片而已





2019年4月20日 星期六

Django利用網址列傳遞參數實現加減法


之前提到Django的視圖與URL,

光說不練程式不會進步的,

馬上來進行實作

Django利用網址列傳遞參數實現加減法


範例中使用兩種不同傳遞參數的方式,

來實作網址列傳遞參數的方法,


加法部分:

在url.py   加上add  ,

並加上對應的函式

path('accounts/add/', accounts_view.add),

接著再到views.py 

實現要執行的功能

def add(request):
        c = int(request.GET['a']) + int(request.GET['b'])
        return HttpResponse(c)

接著到網址列打上

add/?a=1&b=2

螢幕會直接秀出答案


減法部分:

在url.py加上minus,

並加上對應的函式,

可以看出與加法傳遞的方式有所不同,

這同時也是Django 2.x    之後的新作法,

path('accounts/minus///', accounts_view.minus),

然後到views.py實現減法計算的code

def minus(request, a, b):
           c = a-b
           return HttpResponse(c)


接著到網址列打上

minus/2/1

程式會將計算結果秀在網頁上


此兩種傳遞參數的方法不大一樣,

可以根據使用情境的不同,

選擇需要的方法


Django的視圖與URL


Django的架構是採urlpattern網址與函式相對應的方式,

1.    在 url.py 檔案, 設定網址與對應的函式
2.     在 views.py檔案,   設計函式內容

藉由此兩個檔案構成

Django的視圖與URL


就能在網站上呈現出想秀出的內容,



建立一個新的Django專案,

其url.py預設有底下內容

from django.contrib import admin
from django.urls import path
urlpatterns = [ path('admin/', admin.site.urls),
]


Django 2.x之後,

使用較為簡易的語法

path(網址, 函式)


當然舊有的語法

url(  網址 ,函式)


只要引入 

from django.urls import re_path

就能夠同樣以正則表達式表示網址

re_path(正則表達式 ,  函式 )






視圖也就是所謂的views.py,

開發者必須在此定義開發上述網址所回應的函式,

多個網址可對應到同一個函式,

可以的話,

函式名稱最好與網址名稱相同,

這樣識別起來比較方便,

前次提到過的Hello world

在views.py中長這樣

from django.http import HttpResponse

# Create your views here.

def hello(request):
              return HttpResponse('Hello world')




2019年4月19日 星期五

在Ubuntu16.04安裝Open edX 開發用devstack

之前介紹過

在Google Cloud Platform(GCP)快速安裝Open edX線上教學平台(Native installation),

也提過

在Ubuntu 16.04 快速安裝Open edX線上教學平台(Native installation)

除了Native安裝以外,

還有專為開發用的Devstack版本,

今天就要來教大家


在Ubuntu16.04安裝Open edX 開發用devstack



Devstack是在開發設計的Docker容器中部署Open edX平台,

運行Open edX平台希望藉由此版本提早發現並修復系統配置問題,

Devstack跟Native 版本不大一樣,

例如

在Devstack中禁用nginx和gunicorn,

改為使用Django的runserver代替,

原因無他,

它就是開發版本的Open edX,


1.
首先要到GitHub上下載原始碼

git clone https://github.com/edx/devstack


2.
接著切換到資料夾:

cd devstack

執行底下命令安裝需要的元件:

make requirements


3.
切換到需要的版本

git checkout open-release/hawthorn.master

並設定環境變數

export OPENEDX_RELEASE=hawthorn.master

並執行底下命令下載所需的檔案

make dev.checkout

make dev.clone

4.
底下命令會建立一個基本的開發環境於devstack中

make dev.provision

5.
到此已安裝完畢,

透過底下命令,

就能直接在本機上運行Open edX進行開發

make dev.up



由於此版本的Open edX是建立於Docker容器中,

故許多命令都要透過Docker,

之前有提到,

Docker安裝教學

有興趣的可再去觀看





一些實用的命令:



docker-compose restart


可以為


  • credentials 
  • discovery 
  • ecommerce 
  • lms 
  • edx_notes_api 
  • studio(就是cms)

透過此命令可重新啟動該service




若要更新devstack版本也很簡單,

將Open edX關閉後更新,

make down 

make pull 

更新完畢後再次啟動即可

make dev.up





各個service的URL為:


Credentials                     http://localhost:18150/api/v2/

Catalog/Discovery         http://localhost:18381/api-docs/

E-Commerce/Otto         http://localhost:18130/dashboard/

LMS                              http://localhost:18000/

Notes/edx-notes-api      http://localhost:18120/api/v1/

Studio/CMS                  http://localhost:18010/











2019年4月16日 星期二

Ubuntu16.04 中文輸入法設定


Ubuntu支援了多國語言,

當然輸入法也要支援才合理,

所以今天要來教大家

Ubuntu16.04 中文輸入法設定


首先到系統設定值,

找到語言支援

並確定   漢語(台灣)已經在系統中,

這次範例的鍵盤輸入法系統就選定fcitx,

其他還有如ibus等等其他系統設定方式也是相同的



接著到系統工具列的右上角找到鍵盤圖示,

在上面按滑鼠右鍵,

選擇ConfigureFcitx,


若為以中文全新安裝的Ubuntu,

 輸入法設定預設有底下兩種,

按視窗底下的+號按鈕來新增一個輸入法,


本範例選擇 "新酷音",

按確定 ,

並將原有的 "鍵盤 - 漢語" 以按下  -  號按鈕移除


接著同樣在工具列的鍵盤圖示按右鍵,

選擇文字輸入設定


這裡可以設定切換輸入法的按鍵



設定完畢以後,

就能按照剛才設定的切換鍵來切換要用的輸入法了




在專案中建立第一個Django app



Django專案初始設定中有提到,

一個專案可以有一個以上的app,

而且這些app各自獨立並且可以運行在不同的專案中,

今天就來教大家:

在專案中建立第一個Django app


使用

django-admin   startproject    project_name

能夠新增一個新的專案,

而新增app的方式與此類似,

執行:

python   manage.py    startapp    accounts

就能建立一個名為accounts的app,

建立以後可看如下圖左邊紅色框,

系統已經新增一個app在此專案中,



要在專案中使用此元件的話,

要到專案的settings.py找到INSTALLED_APPS,

將此名為accounts的app加入專案中,

下圖範例右方的紅色框打字到一半IDE就自動帶出相關的名稱,

(因為一個好的IDE軟體能幫助專案快速開發)


接著到專案的urls.py設定要進入此app的網址,

這裡直接就使用accounts,

與舊版的Django不同,

URL主要以path('路徑',name)為主,

當然要使用舊有方式也可以,

不過要特別另外導入

設定url之前,

要先在上方使用

from   accounts  import  views   as  accounts_view

將這個app的檔案匯入並取名為accounts_view,

透過

path('accounts/', accounts_view.hello),

將此網址指向accounts_view的hello



最後再根據 url 中的設定,

新增了 相對應的  hello   函式,

def hello(request):
    return HttpResponse('Hello world')

範例中僅顯示Hello world字樣



接著執行:

python manage.py   runserver

就能在瀏覽器的網址打上

http://127.0.0.1:8000/accounts

觀看執行結果




2019年4月15日 星期一

ASUS TUF Gaming FX504GD 簡易開箱


 TUF   Gaming系列出的第一款筆電,

就是今天的主題:


ASUS TUF Gaming FX504GD 簡易開箱



FX504GD主要有幾個特色:


堅固耐用的鍵盤,

標榜著可承受2000萬次的敲擊,

號稱是業界標準的兩倍,



如臨其境的7.1聲道環繞音響,

不管是遊戲也好或者看電影也好,

都提供了等化器讓使用者根據需求自行調整,



防塵散熱(ADC)系統,

除了散熱以外,

還避免灰塵積結在散熱鰭片上,

延長NB的使用壽命



外箱不是很大,


裡面有兩層,

裝有機器本體與背包一個,



打開存放機器本體的紙箱,


正面有顯眼的紅色ASUS,


右側存放滑鼠與電源線


左側存放變壓器


機器本體底下有使用手冊以及保固卡


機器本體



機器若有開機鍵盤恆亮紅光,

整體使用上來說還不錯,

風扇還算安靜,

使用許久溫度也不燙手,

是值得入手的好機器



話說回來,

4G RAM似乎不大夠,

趁升級記憶體拍張內部構造圖