abp(net core)+easyui+efcore实现仓储管理系统目录

abp(net core)+easyui+efcore实现仓储管理系统——EasyUI前端页面框架 (十八)

abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之八(三十四)

 
 

在上一篇abp(net core)+easyui+efcore实现仓储管理系统——入库管理之五(四十一)文章中实现了入库管理的列表页面,并实现了控制器的代码。在今天我们学习如何在前端实现新增入库单信息界面。

入库单新增功能

1. 在Visual Studio 2017的“解决方案资源管理器”中,左键单击在展现层的“ABP.TPLMS.Web.MVC”项目中的Views目录。找到InStock\Index.cshmtl文件。在此文件中添加视图代码。代码如下。

 <!---------------------------导入货物信息弹出窗体------------------------------------------->
<div id="divImportCargo" class="easyui-dialog" closed="true" style="top:10px;"
data-options="buttons: '#dlg-buttons-cgo'">
<!--panel-->
<div data-options="region:'center',split:false" style="height:460px;">
<!--表格-->
<table id="dgCargo"></table>
</div>
</div> <div id="dlg-buttons-cgo">
<input type="submit" id="btnImportCargo" value="导入" class="btn btn-primary" />
<input type="submit" id="btnCancleCargo" value="取消" class="btn btn-info" />
</div>
<!---------------------------新增修改入库单信息------------------------------------------->
<div id="divAddUpdINO" class="easyui-dialog" closed="true" style="top:10px;"
data-options="buttons: '#dlg-buttons'">
<div id="box">
<div title="入库单">
<table>
<tr>
<td><input type="hidden" name="ID" id="IDUpdate" /></td>
</tr>
<tr>
<td>入库单号:</td>
<td><input type="text" id="UpdNO" name="UNO" class="form-control input-sm" /></td>
<td>预计送货日期:</td>
<td>
<input type="text" id="PreDeliveryTimeUpdate" name="UPreDeliveryTime"
class="form-control input-sm" /> </td>
<td> 状态:</td>
<td><input type="text" id="StatusUpdate" name="UStatus"
class="form-control input-sm" value="0" /></td> </tr>
<tr>
<td> 发货人:</td>
<td><input type="text" id="OwnerCodeUpdate" name="UOwnerCode"
class="form-control input-sm" /></td> <td colspan="2">
<input type="text" id="OwnerNameUpdate" name="UOwnerName"
class="form-control input-sm" /> </td>
<td>社会信用代码:</td>
<td>
<input type="text" id="ConsignerSccdUpdate" name="UConsignerSccd"
class="form-control input-sm" />
</td>
</tr>
<tr>
<td> 收货人:</td>
<td><input type="text" id="CustomerCodeUpdate" name="UCustomerCode"
class="form-control input-sm" /></td>
<td colspan="2">
<input type="text" id="CustomerNameUpdate" name="UCustomerName"
class="form-control input-sm" /> </td>
<td>社会信用代码:</td>
<td>
<input type="text" id="ConsigneeSccdUpdate" name="UConsigneeSccd"
class="form-control input-sm" />
</td>
</tr>
<tr>
<td> 经营企业:</td>
<td><input type="text" id="BizpoEtpsNoUpdate" name="UBizpoEtpsNo"
class="form-control input-sm" /></td>
<td colspan="2">
<input type="text" id="BizpoEtpsNameUpdate" name="UBizpoEtpsName"
class="form-control input-sm" />
</td>
<td>社会信用代码:</td>
<td>
<input type="text" id="BizpoEtpsSccdUpdate" name="UBizpoEtpsSccd"
class="form-control input-sm" />
</td>
</tr>
<tr>
<td>理货员:</td>
<td> <input type="text" id="ReceiverUpdate" name="UReceiver"
class="form-control input-sm" /></td>
<td>收货开始时间:</td>
<td>
<input type="text" id="ReceiveTimeUpdate" name="UReceiveTime"
class="form-control input-sm" /> </td>
<td>收货结束时间:</td>
<td>
<input type="text" id="ERcvTimeUpdate" name="UERcvTime"
class="form-control input-sm" />
</td>
</tr>
<tr>
<td>净重:</td>
<td> <input type="text" id="NwtUpdate" name="UNwt" class="form-control input-sm"
value="0" /></td>
<td>毛重:</td>
<td>
<input type="text" id="GwtUpdate" name="UGwt" class="form-control input-sm"
value="0" /> </td>
<td>件数:</td>
<td> <input type="text" id="PackageQtyUpdate" name="UPackageQty"
class="form-control input-sm" value="0" />
</td>
</tr>
<tr>
<td>仓库号:</td>
<td>
<input type="text" id="WarehouseNoUpdate" name="UWarehouseNo"
class="form-control input-sm" />
</td> <td>仓库类型:</td>
<td>
<input type="text" id="WarehouseTypeUpdate" name="UWarehouseType"
class="form-control input-sm" />
</td>
<td>核查时间:</td>
<td>
<input type="text" id="CheckTimeUpdate" name="UCheckTime"
class="form-control input-sm" />
</td>
</tr>
<tr>
<td> 核查员:</td>
<td>
<input type="text" id="CheckerUpdate" name="UChecker"
class="form-control input-sm" />
</td>
<td>操作员:</td>
<td> <input type="text" id="OperUpdate" name="UOper" class="form-control input-sm" />
</td>
<td>创建时间:</td>
<td>
<input type="text" id="CreationTimeUpdate" name="UCreationTime"
class="form-control input-sm" />
</td>
</tr>
<tr>
<td> 备注:</td>
<td colspan="5"><input type="text" id="RemarkUpdate" name="URemark"
class="form-control input-sm" /></td> </tr>
</table>
</div>
<div title="入库单明细">
<!--panel-->
<div data-options="region:'center',split:false" style="height:400px;">
<!--表格-->
<table id="dgINOD"></table>
</div>
</div>
</div>
</div> <div id="dlg-buttons">
<input type="submit" id="btnSave" value="保存" class="btn btn-primary" />
<input type="submit" id="btnSubmit" value="提交" class="btn btn-primary" />
<input type="submit" id="btnCancle" value="取消" class="btn btn-info" />
</div>

2. 在Visual Studio 2017的“解决方案资源管理器”中,找到表示层“ABP.TPLMS.Web.Mvc”项目中的wwwroot\view-resources\InStock目录。

3. 在InStock目录中找到Index.js文件。添加新增入库单的代码。代码如下。

//--------------系统管理-->入库单管理-------------------------//
//显示货物信息数据
function ShowCargo() {
abp.log.warn('货物信息列表日志...');
$("#dgCargo").datagrid({
url: "/Cargo/List",
title: "货物管理管理",
pagination: true,
pageSize: 10,
pageList: [10, 20, 30],
fit: true,
fitColumns: false,
loadMsg: "正在加载货物信息...",
nowarp: false,
border: false,
idField: "Id",
sortName: "Id",
sortOrder: "asc",
frozenColumns: [[//冻结列
{ field: "ck", checkbox: true, align: "left", width: 50 } ]],
columns: [[
     { title: "编号", field: "Id", width: 50, sortable: true },
     { title: "供应商", field: "SupplierId", width: 80, sortable: true },
    { title: "HSCode", field: "HSCode", width: 100, sortable: true },
    { title: "货物代码", field: "CargoCode", width: 100, sortable: true },
     { title: "货物名称", field: "CargoName", width: 80, sortable: false },
     { title: "规格型号", field: "Spcf", width: 100, sortable: false },
     { title: "产销国", field: "Country", width: 80, sortable: false },
    { title: "计量单位", field: "Unit", width: 100, sortable: false },
    { title: "包装", field: "Package", width: 100, sortable: false },
  { title: "单价", field: "Price", width: 100, sortable: false },
  { title: "币制", field: "Curr", width: 80, sortable: false },
  { title: "长宽高", field: "Length", width: 100, sortable: false, formatter: function (value, row, index) {
return row.Length + '*' + row.Width + '*' + row.Height;
}
},
{ title: "体积", field: "Vol", width: 80, sortable: false },
     { title: "备注", field: "Remark", width: 80, sortable: false },
{ title: '创建时间', field: 'CreationTime', width: 100, align: 'center' }
]]
});
abp.log.warn('3货物信息列表日志...');
} function ShowCargoInfo() {
$("#divImportCargo").dialog({
closed: false,
title: "选择货物信息",
modal: true,
width: 820,
height: 550,
collapsible: true,
minimizable: true,
maximizable: true,
resizable: true
}); ShowCargo();
$("#dgCargo").datagrid("clearChecked");
$("#dgCargo").datagrid("clearSelections");
} function reloaded() { //reload
$("#reload").click(function () {
$('#dgINSO').datagrid('reload');
});} //清空文本框 function clearAll() {
$("#divAddUpdINO input").each(function () {
$(this).val("");
});
//默认值
$("#PreDeliveryTimeUpdate").val(getNowFormatDate());
$("#StatusUpdate").val("0");
$("#NwtUpdate").val("0");
$("#GwtUpdate").val("0");
$("#PackageQtyUpdate").val("0"); } function GetNo() {
$.get(abp.appPath + "api/services/app/InStockOrder/GetNo", function (data) {
// alert(data);
// var obj = JSON.parse(data);
$("#UpdNO").val(data);
//$("#IDUpdate").val(obj.Id);
}); } //获取当前时间,格式YYYY-MM-DD
function getNowFormatDate() {
var date = new Date();
var seperator1 = "-";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
} if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = year + seperator1 + month + seperator1 + strDate;
return currentdate;
} //将表单数据转为json
function form2Json(id) {
var arr = $("#" + id).serializeArray()
var jsonStr = ""; jsonStr += '{';
for (var i = 0; i < arr.length; i++) {
jsonStr += '"' + arr[i].name + '":"' + arr[i].value + '",'
} jsonStr = jsonStr.substring(0, (jsonStr.length - 1));
jsonStr += '}'
var json = JSON.parse(jsonStr)
return json
} function defaultTab() {
//默认显示第一个tab
$('#box').tabs('select', "入库单");
} //弹出 导入送货单的的对话框
function showInSODialog() {
$("#add").click(function () { $.messager.confirm('编辑', '您想要创建入库单吗?', function (r) {
if (r) {
//打开对话框编辑
$("#divAddUpdINO").dialog({
closed: false,
title: "新增入库单",
modal: true,
width: 820,
height: 550,
collapsible: true,
minimizable: true,
maximizable: true,
resizable: true,
}); }
defaultTab();
GetNo();
clearAll();
ShowDetail("");
}); }); $("#btnSave").click(function () {
//保存
var id = $("#IDUpdate").val();
if (id == "" || id == undefined) {
//验证
$.messager.confirm('确认', '您确认要保存吗?', function (r) {
if (r) {
var postData = GetINO();
if (postData.No == "" || postData.CustomerCode == "" || postData.CustomerName=="" || postData.OwnerName=="") {
$.messager.alert('提示', ' 请填写相关必填项!', 'warning');
return;
}
$.post("/InStock/Add", postData, function (data) {
if (data == "OK") {
$.messager.alert("提示", "保存成功!");
initable();
}
else if (data == "NO") {
$.messager.alert("提示", "保存失败!");
return;
}
});
}
})
}
else {
saveDetail();
}
});
} //显示明细
function ShowDetail(no) {
var lastIndex;
$("#dgINOD").datagrid({
url: "/InStock/GetDetail?no=" + no,
title: "入库单明细",
pagination: false,
fit: true,
fitColumns: false,
loadMsg: "正在加载入库单明细信息...",
toolbar: "#dg-detail-button",
nowarp: false,
border: false,
idField: "Id",
sortName: "Id",
sortOrder: "asc",
singleSelect: true,
iconCls: 'icon-edit',
columns: [[
{ title: "编号", field: "SeqNo", width: 50, sortable: true },
{ title: "入库单号", field: "InStockNo", width: 100, sortable: true },
{ title: "HSCode", field: "HSCode", width: 80, sortable: false },
{ title: "货物代码", field: "CargoCode", width: 100, sortable: true },
{ title: "货物名称", field: "CargoName", width: 160, sortable: false },
{ title: "规格型号", field: "Spcf", width: 80, sortable: false },
{ title: "数量", field: "Qty", width: 100, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 4
}
}
},
{ title: "长", field: "Length", width: 70, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 2
}
}
},
{title: "宽", field: "Width", width: 70, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 2
}
}
},
{ title: "高", field: "Height", width: 70, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 2
}
}
},
{ title: "产销国", field: "Country", width: 70, align: 'center' },
{title: "单价", field: "Price", width: 100, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 2
}
}
},
{ title: "总价", field: "TotalAmt", width: 100, align: 'center', editor: { type: 'numberbox', options: {
required: true, min: 0, precision: 2
}
}
}, { title: "包装", field: "Package", width: 70, align: 'center' },
{ title: "计量单位", field: "Unit", width: 70, align: 'center' },
{ title: "总体积", field: "Vol", width: 70, align: 'center', editor: {
type: 'numberbox', options: {
required: true, min: 0, precision: 4
}
}
},
{ title: "品牌", field: "Brand", width: 70, align: 'center' }
]],
onClickRow: function (index, rowData) {
if (lastIndex != index) {
$('#dgINOD').datagrid('endEdit', lastIndex);
editrow(index);
}
lastIndex = index;
},
onBeginEdit: function (rowIndex, rowData) {
setEditing(rowIndex);
}
});
} //计算报价小计
function setEditing(rowIndex) {
var editors = $('#dgINOD').datagrid('getEditors', rowIndex);
var priceEditor = editors[4];
var qtyEditor = editors[0];
var lengthEditor = editors[1];
var widthEditor = editors[2];
var heightEditor = editors[3];
var totalVolEditor = editors[6];
var totalAmtEditor = editors[5];
priceEditor.target.numberbox({
onChange: function () { calculate();}
}); qtyEditor.target.numberbox({
onChange: function () {
calculate();
calculateVol();
}
}); lengthEditor.target.numberbox({
onChange: function () { calculateVol(); }
}); widthEditor.target.numberbox({
onChange: function () { calculateVol(); }
}); heightEditor.target.numberbox({
onChange: function () { calculateVol(); }
}); function calculate() {
var cost = (priceEditor.target.val()) * (qtyEditor.target.val());
console.log(cost);
totalAmtEditor.target.numberbox("setValue", cost);
} function calculateVol() {
var vol = (lengthEditor.target.val() / 100.0) * (widthEditor.target.val() / 100.0) * (heightEditor.target.val() / 100.0)*
(qtyEditor.target.val());
console.log(vol);
totalVolEditor.target.numberbox("setValue", vol);
} } function editrow(index) {
$('#dgINOD').datagrid('selectRow', index)
.datagrid('beginEdit', index);
} function endEdit() {
var rows = $('#dgINOD').datagrid('getRows');
if (rows==undefined) {
return;
}
for (var i = 0; i < rows.length; i++) {
$('#dgINOD').datagrid('endEdit', i);
}
} function saveDetail() {
endEdit();
$.messager.confirm('确认', '您确认要修改吗?', function (r) {
var effectRow = new Object();
var postData = GetINO();
if (postData.Id) {
effectRow["postdata"] = JSON.stringify(postData);
}
if ($('#dgINOD').datagrid('getChanges').length) {
var inserted = $('#dgINOD').datagrid('getChanges', "inserted");
var deleted = $('#dgINOD').datagrid('getChanges', "deleted");
var updated = $('#dgINOD').datagrid('getChanges', "updated"); if (inserted.length) {
effectRow["inserted"] = JSON.stringify(inserted);
}
if (deleted.length) {
effectRow["deleted"] = JSON.stringify(deleted);
}
if (updated.length) {
effectRow["updated"] = JSON.stringify(updated);
}
}
$.post("/InStock/Update", effectRow, function (data) {
// alert(data);
if (data.success) {
$.messager.alert("提示", data.result);
$('#dgINOD').datagrid('acceptChanges');
}
else {
$.messager.alert("提示", data.result);
return;
}
}, "JSON")
;
})
} function init() {
$("#PreDeliveryTimeUpdate").val(getNowFormatDate()); $("#btnCancle").click(function () {
$("#divAddUpdINO").dialog("close");
$('#dgINSO').datagrid('reload');
}); $("#btnCancleCargo").click(function () {
$("#divImportCargo").dialog("close");
$('#dgINSO').datagrid('reload');
}); $("#btnImportCargo").click(function () {
//保存
var rows = $('#dgCargo').datagrid('getSelections');
if (rows.length > 0) {
//验证
$.messager.confirm('确认', '您确认要保存所选择的货物信息吗?', function (r) {
if (r) {
var obj_No = $("#UpdNO").val();
var ids = [];//重要不是{}
for (var i = 0; i < rows.length; i++) {
ids.push(rows[i].Id);
} var postData = {
"Ids": ids.join(','),
"No": obj_No
}; $.post("/InStock/ImportCargo", postData, function (data) {
if (data == "OK") {
$.messager.alert("提示", "保存货物信息成功!");
ShowDetail(obj_No);
} else if (data == "NO") {
$.messager.alert("提示", "保存货物信息失败!");
return;
}
});
}
})
}
});
} function GetINO() {
var postData = {
"No": $("#UpdNO").val(),
"DeliveryNo": "",
"PreDeliveryTime": $("#PreDeliveryTimeUpdate").val(),
"CustomerCode": $("#CustomerCodeUpdate").val(),
"OwnerName": $("#OwnerNameUpdate").val(),
"OwnerCode": $("#OwnerCodeUpdate").val(),
"CustomerName": $("#CustomerNameUpdate").val(),
"CheckTime": $("#CheckTimeUpdate").val(),
"WarehouseType": $("#WarehouseTypeUpdate").val(),
"WarehouseNo": $("#WarehouseNoUpdate").val(),
"Oper": $("#OperUpdate").val(),
"Receiver": $("#ReceiverUpdate").val(),
"Nwt": $("#NwtUpdate").val(),
"Remark": $("#RemarkUpdate").val(),
"ReceiveTime": $("#ReceiveTimeUpdate").val(), "Status": $("#StatusUpdate").val(),
"Gwt": $("#GwtUpdate").val(),
"Checker": $("#CheckerUpdate").val(),
"PackageQty": $("PackageQtyUpdate").val(),
"LastUpdateTime": "",
"LastOper":""
}; var id = $("#IDUpdate").val();
if (!(id=="" || id==undefined)) {
postData.Id = id;
}
return postData;
} function showINO(row) {
$("#IDUpdate").val(row.Id);
$("#UpdNO").val(row.No);
$("#PreDeliveryTimeUpdate").val(row.PreDeliveryTime);
$("#CustomerCodeUpdate").val(row.CustomerCode);
$("#CustomerNameUpdate").val(row.CustomerName);
$("#OwnerCodeUpdate").val(row.OwnerCode);
$("#OwnerNameUpdate").val(row.OwnerName);
$("#CheckTimeUpdate").val(row.CheckTime);
$("#WarehouseTypeUpdate").val(row.WarehouseType);
$("#WarehouseNoUpdate").val(row.WarehouseNo);
$("#OperUpdate").val(row.Oper);
$("#ReceiverUpdate").val(row.Receiver);
$("#NwtUpdate").val(row.Nwt);
$("#RemarkUpdate").val(row.Remark);
$("#ReceiveTimeUpdate").val(row.ReceiveTime);
$("#StatusUpdate").val(row.Status);
$("#GwtUpdate").val(row.Gwt);
$("#CheckerUpdate").val(row.Checker);
} //------------系统管理-->入库单管理结束---------------//

abp(net core)+easyui+efcore实现仓储管理系统——入库管理之六(四十二)的更多相关文章

  1. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之八(四十四)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  2. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之四(四十)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  3. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之七(四十三)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  4. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之五(四十一)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  5. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之九(四十五)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  6. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十(四十六)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  7. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十一(四十七)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  8. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十二(四十八)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  9. abp(net core)+easyui+efcore实现仓储管理系统——出库管理之一(四十九)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

随机推荐

  1. Dubbo源码学习(二)

    @Adaptive注解 在上一篇ExtensionLoader的博客中记录了,有两种扩展点,一种是普通的扩展实现,另一种就是自适应的扩展点,即@Adaptive注解的实现类. @Documented ...

  2. C++走向远洋——55(项目一3、分数类的重载、>>

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  3. 初学Qt——QTableView+QSqlqueryModel

    我们在显示报表时可以用到上面两个类来实现,QTableView负责对视图显示:QSqlqueryModel则负责数据模块. 这里数据查询使用QSqlqueryModel主要是这个类可以通过自己写的查询 ...

  4. [Abp vNext 源码分析] - 19. 多租户

    一.简介 ABP vNext 原生支持多租户体系,可以让开发人员快速地基于框架开发 SaaS 系统.ABP vNext 实现多租户的思路也非常简单,通过一个 TenantId 来分割各个租户的数据,并 ...

  5. Golang 使用Protocol Buffer 案例

    目录 1. 前言 2. Protobuf 简介 2.1 Protobuf 优点 2.2 Protobuf 缺点 2.3 Protobuf Golang 安装使用 3. Protobuf 通讯案例 3. ...

  6. audioContext.decodeAudioData 返回null 错误

    此问题并不是100%出现.没想到国外大神已经有处理此问题的经验 原贴地址: https://stackoverflow.com/questions/10365335/decodeaudiodata-r ...

  7. 使用AQS自定义重入锁

    一.创建MyLock import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.AbstractQueuedSyn ...

  8. R时间序列分析实例

    一.作业要求 自选时间序列完成时间序列的建模过程,要求序列的长度>=100. 报告要求以下几部分内容: 数据的描述:数据来源.期间.数据的定义.数据长度. 作时间序列图并进行简单评价. 进行时间 ...

  9. ES6: let 与 const

    ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const. let 声明的变量只在 let 命令所在的代码块内有效. const 声明一个只读的常量,一旦声明 ...

  10. 干货来啦。Flask框架看这一篇就够了,关注不迷路,Jeff带你看源码。开发技术时时更新

    目录 一.初识Flask 1.1 什么是flask? 1.2 为什么要有flask? 二.Flask快速启动 三.Flask四剑客 三.flask的配置文件 可以配置的属性 四.flask路由 4.1 ...