# 網頁SOP???--兩個禮拜網頁心得
## 選擇權回測系統
- 功能:
- 輸入介面
- 架構: flask
- 後端取前端值的方式:
```python=
expire_far_near = request.args.get('expire_far_near', default="近月加遠月", type=str)
call_put = request.args.get('call_put', default="買權加賣權", type=str)
max_amount_per_month = request.args.get('max_trading_num', default=100, type=int)
trading_num = request.args.get('trading_num', default=10, type=int)
least_price = request.args.get('least_price', default=1, type=int)
```
- SOP
1. 下載一個模板
2. 建立flask架構的資料夾
3. 建立一個虛擬環境
- 方法如下: 先在終端機移動(cd 加路徑)到模板底下的資料夾,然後輸入以下三行指令
- python -m venv venv
- 建立虛擬環境
- venv\scripts\activate
- 進入虛擬環境
- pip install -r requirements.txt
- 裝好所有需要的套件
- python manage.py runserver
- 用python執行 manage.py(原先模板不會有這個py檔需自己建立)
3. manage.py(如何用一個最簡單的py?)
#### 連上伺服器可以開始寫有錢後端的網頁囉
1. 用pingendo寫前端
- 優點
- 排版快速,可以直接用拖曳的
- 可以快速排版不用每次都重新跑cmd
- 它會自動連結js,所以原先預設的按鈕都可以按(除了換頁)
- 字體字型可以直接調整不用寫程式
- 缺點
- 程式碼會偏亂,因為拖曳時會發生程式碼變亂的風險
2. JS-ajax
```javascript=
function get_value() {
document.getElementById('div10').style.display = document.getElementById('div10').style.display = 'block';
var expire_far_near = $('input:radio:checked[name="expire_far_near"]').val();
// var call_put = document.getElementsByName("call_put").value;
var call_put = $('input:radio:checked[name="call_put"]').val();
var max_trading_num = document.getElementById("max_trading_num_id").value;
$.ajax({
type: "GET",
url: "/calculate",
dataType: 'json',
async: true,
data: {
//這是從前端送到後端. 有加引號是後端抓到的值.沒加是前方var的值
'call_put': call_put,
'max_trading_num': max_trading_num,
},
success: function(response) {
// response是一個從後端傳到前端的變數為前方定義的型態(json)
var data = response;
var data1 = JSON.parse(data[0]); //保證金
var data2 = JSON.parse(data[1]); //累積統計
var data3 = JSON.parse(data[2]); //未平倉口數
var data4 = JSON.parse(data[3]); //統計數據
console.log(typeof(data4));
draw_chart(data1, data2, data3);
statical_value(data4);
},
beforeSend: function() {
$('body').loading({
onStart: function(loading) {
loading.overlay.slideDown(400);
},
onStop: function(loading) {
loading.overlay.slideUp(400);
}
});
},
complete: function() {
$('body').loading('stop');
},
error: function() {
console.log("error 3")
}
})
};
```
- 主要程式:
- html/js/py
-
{"metaMigratedAt":"2023-06-14T23:06:40.468Z","metaMigratedFrom":"Content","title":"網頁SOP???--兩個禮拜網頁心得","breaks":true,"contributors":"[{\"id\":\"fdb9f1bc-edc4-4743-8287-2ea98d1773ca\",\"add\":5101,\"del\":2314}]"}