当前位置: 首页 > news >正文

广州做一个营销网站多少钱工程公司简介范文

广州做一个营销网站多少钱,工程公司简介范文,广西智能网站建设平台,招标文件范本文章目录 1、简介1.1 flask1.2 vue 2、开发2.1 新建flask项目2.2 安装flask库2.3 新建flask的主脚本2.4 新建Vue项目2.5 安装vue项目依赖项2.6 新增组件Ping.vue2.7 Ping.vue增加HTTP请求2.8 美化vue前端页面2.9 新增组件Books.vue2.10 flask增加路由Books2.11 Books.vue增加HT… 文章目录 1、简介1.1 flask1.2 vue 2、开发2.1 新建flask项目2.2 安装flask库2.3 新建flask的主脚本2.4 新建Vue项目2.5 安装vue项目依赖项2.6 新增组件Ping.vue2.7 Ping.vue增加HTTP请求2.8 美化vue前端页面2.9 新增组件Books.vue2.10 flask增加路由Books2.11 Books.vue增加HTTP请求2.12 flask修改路由Books2.13 Books.vue增加添加接口2.14 新增组件Alert.vue2.15 修改组件Alert.vue2.16 变量绑定Alert组件2.17 flask端Book对象添加唯一id2.18 Books.vue增加更新操作 结语 1、简介 1.1 flask Flask是一个简单但功能强大的Python微Web框架非常适合构建RESTful API。像SinatraRuby和ExpressNode一样它是最小和灵活的所以你可以从小处着手然后根据需要构建更复杂的应用程序。 安装如下 pip install flask1.2 vue Vue 是一个用于构建用户界面的开源 JavaScript 框架。它采用了React和Angular的一些最佳实践。也就是说与 React 和 Angular 相比它更平易近人因此初学者可以快速启动和运行。它也同样强大因此它提供了创建现代前端应用程序所需的所有功能。 安装如下 npm create vue3.6.12、开发 2.1 新建flask项目 首先创建一个新的项目目录 mkdir flask-vue-crud cd flask-vue-crud创建并激活虚拟环境 python -m venv myvenv .\myvenv\Scripts\activate2.2 安装flask库 将 Flask 与 Flask-CORS 扩展一起安装 pip install Flask Flask-Cors2.3 新建flask的主脚本 app.py # -*- coding:utf-8 -*-from flask import Flask, jsonify, make_response from flask_cors import CORSclass Config(object):DEBUGTrueJSON_AS_ASCIIFalse# instantiate the app app Flask(__name__) # app.config.from_object(__name__) app.config.from_object(Config) # app.config[JSON_AS_ASCII] False # app.config[DEBUG] True # app.config[JSONIFY_MIMETYPE] application/json;charsetutf-8# enable CORS CORS(app, resources{r/*: {origins: *}})app.route(/, methods[GET]) def index():response make_response(jsonify(爱看书的小沐))response.headers[Content-Type] application/json;charsetutf-8return response# return jsonify(爱看书的小沐)# sanity check route app.route(/ping, methods[GET]) def ping_pong():return jsonify(xiaomus pong!)if __name__ __main__:app.run(port5001)运行上面这个脚本 flask run --port5001 --debug2.4 新建Vue项目 使用强大的create-vue工具它使用Vite来生成一个定制的项目样板。 在 “flask-vue-crud” 中运行以下命令来初始化一个新的 Vue 项目 npm create vue3.6.1快速浏览生成的项目结构。这可能看起来很多但我们只会处理“src”文件夹中的文件和文件夹以及index.html文件。 main.js app 入口点它加载并初始化 Vue 以及根组件 App.vue根组件这是呈现所有其他组件的起点 components UI 组件的存储位置 router/index.js 定义 URL 并将其映射到组件的位置 views 绑定到路由器的 UI 组件的存储位置 assets静态资产如图像和字体的存储位置查看 client/src/components/HelloWorld.vue 文件。这是一个单个文件组件分为三个不同的部分 模板用于特定于组件的 HTML 脚本组件逻辑通过JavaScript实现 样式用于 CSS 样式其中index.html 文件是我们 Vue 应用程序的起点 !DOCTYPE html html langenheadmeta charsetUTF-8link relicon href/favicon.icometa nameviewport contentwidthdevice-width, initial-scale1.0titleVite App/title/headbodydiv idapp/divscript typemodule src/src/main.js/script/body /html 2.5 安装vue项目依赖项 $ cd vue-project $ npm install $ npm run dev浏览器访问如下 2.6 新增组件Ping.vue 为了简化操作请删除“vue-project/src/views”和“vue-project/src/components/icons”文件夹以及vue-project/src/components/TheWelcome.vue和vue-project/src/components/WelcomeItem.vue组件。然后将一个名为 Ping.vue 的新组件添加到名为 Ping.vue 的“vue-project/src/components”文件夹中 templatedivp{{ msg }}/p/div /templatescript export default {name: Ping,data() {return {msg: Hello!,};}, }; /script更新客户端/src/router/index.js将“/ping”映射到组件如下所示 import { createRouter, createWebHistory } from vue-router import Ping from ../components/Ping.vueconst router createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: /ping,name: ping,component: Ping},] })export default router最后在 vue-project/src/App.vue 中删除导航以及样式 templateRouterView / /templatescript setup import { RouterView } from vue-router /script在浏览器访问 http://localhost:5173/ping 2.7 Ping.vue增加HTTP请求 要将客户端 Vue 应用程序与后端 Flask 应用程序连接起来我们可以使用 Axios 库发送 HTTP 请求。 npm install axios1.3.6 --save在 Ping.vue 中更新组件的部分如下所示 templatedivp{{ msg }}/p/div /templatescript import axios from axios;export default {name: Ping,data() {return {msg: ,};},methods: {getMessage() {const path http://localhost:5001/ping;axios.get(path).then((res) {this.msg res.data;}).catch((error) {console.error(error);});},},created() {this.getMessage();}, }; /script 随着 Vue 应用程序在不同的终端窗口中运行您现在应该在浏览器中看到。 2.8 美化vue前端页面 接下来让我们将 Bootstrap一个流行的 CSS 框架添加到应用程序中以便我们可以快速添加一些样式。 npm install bootstrap5.2.3 --save将引导程序样式导入客户端/src/main.js import { createApp } from vue import App from ./App.vue import router from ./router import bootstrap/dist/css/bootstrap.css //add by tomcatimport ./assets/main.cssconst app createApp(App) app.use(router) app.mount(#app)更新vue-project\src\components\Ping.vue的template部分 templatediv classcontainerbutton typebutton classbtn btn-primary{{ msg }}/button/div /template运行开发服务器 2.9 新增组件Books.vue templatediv classcontainerdiv classrowdiv classcol-sm-10h1Books/h1hrbrbrbutton typebutton classbtn btn-success btn-smAdd Book/buttonbrbrtable classtable table-hovertheadtrth scopecolTitle/thth scopecolAuthor/thth scopecolRead?/thth/th/tr/theadtbodytrtdfoo/tdtdbar/tdtdfoobar/tdtddiv classbtn-group rolegroupbutton typebutton classbtn btn-warning btn-smUpdate/buttonbutton typebutton classbtn btn-danger btn-smDelete/button/div/td/tr/tbody/table/div/div/div /template修改路由文件vue-project\src\router\index.js import { createRouter, createWebHistory } from vue-router import Books from ../components/Books.vue import Ping from ../components/Ping.vueconst router createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: /,name: Books,component: Books,},{path: /ping,name: ping,component: Ping},] })export default router浏览器访问http://localhost:5173 2.10 flask增加路由Books app.py: BOOKS [{title: On the Road,author: Jack Kerouac,read: True},{title: Harry Potter and the Philosopher\s Stone,author: J. K. Rowling,read: False},{title: Green Eggs and Ham,author: Dr. Seuss,read: True} ]app.route(/books, methods[GET]) def all_books():return jsonify({status: success,books: BOOKS})浏览器访问如下 2.11 Books.vue增加HTTP请求 templatediv classcontainerdiv classrowdiv classcol-sm-10h1Books/h1hrbrbrbutton typebutton classbtn btn-success btn-smAdd Book/buttonbrbrtable classtable table-hovertheadtrth scopecolTitle/thth scopecolAuthor/thth scopecolRead?/thth/th/tr/theadtbodytr v-for(book, index) in books :keyindextd{{ book.title }}/tdtd{{ book.author }}/tdtdspan v-ifbook.readYes/spanspan v-elseNo/span/tdtddiv classbtn-group rolegroupbutton typebutton classbtn btn-warning btn-smUpdate/buttonbutton typebutton classbtn btn-danger btn-smDelete/button/div/td/tr/tbody/table/div/div/div /templatescript import axios from axios;export default {data() {return {books: [],};},methods: {getBooks() {const path http://localhost:5001/books;axios.get(path).then((res) {this.books res.data.books;}).catch((error) {console.error(error);});},},created() {this.getBooks();}, }; /script浏览器访问如下 2.12 flask修改路由Books from flask import Flask, jsonify, requestapp.route(/books, methods[GET, POST]) def all_books():response_object {status: success}if request.method POST:post_data request.get_json()BOOKS.append({title: post_data.get(title),author: post_data.get(author),read: post_data.get(read)})response_object[message] Book added!else:response_object[books] BOOKSreturn jsonify(response_object)运行 Flask 服务器后您可以在新的终端选项卡中测试 POST 路由 curl -X POST http://localhost:5001/books -d {\title\: \1024\, \author\: \Xiao Mu\, \read\: \true\} -H Content-Type: application/json命令行输入curl指令如下 flask的web服务端的信息输出如下 vue前端页面的最下面增加了一行记录如下 2.13 Books.vue增加添加接口 templatediv classcontainerdiv classrowdiv classcol-sm-10h1Books/h1hrbrbrbuttontypebuttonclassbtn btn-success btn-smclicktoggleAddBookModalAdd Book/buttonbrbrtable classtable table-hovertheadtrth scopecolTitle/thth scopecolAuthor/thth scopecolRead?/thth/th/tr/theadtbodytr v-for(book, index) in books :keyindextd{{ book.title }}/tdtd{{ book.author }}/tdtdspan v-ifbook.readYes/spanspan v-elseNo/span/tdtddiv classbtn-group rolegroupbutton typebutton classbtn btn-warning btn-smUpdate/buttonbutton typebutton classbtn btn-danger btn-smDelete/button/div/td/tr/tbody/table/div/div!-- add new book modal --divrefaddBookModalclassmodal fade:class{ show: activeAddBookModal, d-block: activeAddBookModal }tabindex-1roledialogdiv classmodal-dialog roledocumentdiv classmodal-contentdiv classmodal-headerh5 classmodal-titleAdd a new book/h5buttontypebuttonclassclosedata-dismissmodalaria-labelCloseclicktoggleAddBookModalspan aria-hiddentruetimes;/span/button/divdiv classmodal-bodyformdiv classmb-3label foraddBookTitle classform-labelTitle:/labelinputtypetextclassform-controlidaddBookTitlev-modeladdBookForm.titleplaceholderEnter title/divdiv classmb-3label foraddBookAuthor classform-labelAuthor:/labelinputtypetextclassform-controlidaddBookAuthorv-modeladdBookForm.authorplaceholderEnter author/divdiv classmb-3 form-checkinputtypecheckboxclassform-check-inputidaddBookReadv-modeladdBookForm.readlabel classform-check-label foraddBookReadRead?/label/divdiv classbtn-group rolegroupbuttontypebuttonclassbtn btn-primary btn-smclickhandleAddSubmitSubmit/buttonbuttontypebuttonclassbtn btn-danger btn-smclickhandleAddResetReset/button/div/form/div/div/div/divdiv v-ifactiveAddBookModal classmodal-backdrop fade show/div/div /templatescript import axios from axios;export default {data() {return {activeAddBookModal: false,addBookForm: {title: ,author: ,read: [],},books: [],};},methods: {addBook(payload) {const path http://localhost:5001/books;axios.post(path, payload).then(() {this.getBooks();}).catch((error) {console.log(error);this.getBooks();});},getBooks() {const path http://localhost:5001/books;axios.get(path).then((res) {this.books res.data.books;}).catch((error) {console.error(error);});},handleAddReset() {this.initForm();},handleAddSubmit() {this.toggleAddBookModal();let read false;if (this.addBookForm.read[0]) {read true;}const payload {title: this.addBookForm.title,author: this.addBookForm.author,read, // property shorthand};this.addBook(payload);this.initForm();},initForm() {this.addBookForm.title ;this.addBookForm.author ;this.addBookForm.read [];},toggleAddBookModal() {const body document.querySelector(body);this.activeAddBookModal !this.activeAddBookModal;if (this.activeAddBookModal) {body.classList.add(modal-open);} else {body.classList.remove(modal-open);}},},created() {this.getBooks();}, }; /script2.14 新增组件Alert.vue 让我们添加一个组件以便在添加新书籍后向最终用户显示消息。我们将为此创建一个新组件Alert.vue因为您可能会在许多组件中使用该功能。 将一个名为 Alert.vue 的新文件添加到 “vue-project/src/components” templatepIt works!爱看书的小沐正在添加Alert/p /template然后将其添加到Books.vue中 script import axios from axios; import Alert from ./Alert.vue;export default {data() {return {activeAddBookModal: false,addBookForm: {title: ,author: ,read: [],},books: [],};},components: {alert: Alert,},...}; /script在Books.vue的template部分也添加Alert的使用 templatediv classcontainerdiv classrowdiv classcol-sm-10h1Books/h1hrbrbralert/alertbuttontypebuttonclassbtn btn-success btn-smclicktoggleAddBookModalAdd Book/buttonbrbr.../div/div.../div /template前端预览如下 2.15 修改组件Alert.vue templatedivdiv classalert alert-success rolealert{{ message }}/divbr//div /templatescript export default {props: [message], }; /script同时修改Books.vue的template部分中的alert代码 alert messagehi, 爱看书的小沐/alert2.16 变量绑定Alert组件 Books.vue 中使用绑定表达式。修改Books.vue的template部分中的alert代码 alert :messagemessage/alert修改Books.vue的script的data()函数: data() {return {activeAddBookModal: false,addBookForm: {title: ,author: ,read: [],},books: [],message: ,}; },修改Books.vue的script的addBook()函数: addBook(payload) {const path http://localhost:5001/books;axios.post(path, payload).then(() {this.getBooks();this.message Book added!;}).catch((error) {console.log(error);this.getBooks();}); },仅在 true 时显示警报v-ifshowMessage: alert :messagemessage v-ifshowMessage/alertdata() {return {activeAddBookModal: false,addBookForm: {title: ,author: ,read: [],},books: [],message: ,showMessage: false,}; },addBook(payload) {const path http://localhost:5001/books;axios.post(path, payload).then(() {this.getBooks();this.message Book added!;this.showMessage true;}).catch((error) {console.log(error);this.getBooks();}); },2.17 flask端Book对象添加唯一id import uuidBOOKS [{id: uuid.uuid4().hex,title: On the Road,author: Jack Kerouac,read: True}, ]app.route(/books, methods[GET, POST]) def all_books():response_object {status: success}if request.method POST:post_data request.get_json()BOOKS.append({id: uuid.uuid4().hex,title: post_data.get(title),author: post_data.get(author),read: post_data.get(read)})response_object[message] Book added!else:response_object[books] BOOKSreturn jsonify(response_object)app.route(/books/book_id, methods[PUT]) def single_book(book_id):response_object {status: success}if request.method PUT:post_data request.get_json()remove_book(book_id)BOOKS.append({id: uuid.uuid4().hex,title: post_data.get(title),author: post_data.get(author),read: post_data.get(read)})response_object[message] Book updated!return jsonify(response_object)def remove_book(book_id):for book in BOOKS:if book[id] book_id:BOOKS.remove(book)return Truereturn False2.18 Books.vue增加更新操作 template部分增加 !-- edit book modal -- divrefeditBookModalclassmodal fade:class{ show: activeEditBookModal, d-block: activeEditBookModal }tabindex-1roledialogdiv classmodal-dialog roledocumentdiv classmodal-contentdiv classmodal-headerh5 classmodal-titleUpdate/h5buttontypebuttonclassclosedata-dismissmodalaria-labelCloseclicktoggleEditBookModalspan aria-hiddentruetimes;/span/button/divdiv classmodal-bodyformdiv classmb-3label foreditBookTitle classform-labelTitle:/labelinputtypetextclassform-controlideditBookTitlev-modeleditBookForm.titleplaceholderEnter title/divdiv classmb-3label foreditBookAuthor classform-labelAuthor:/labelinputtypetextclassform-controlideditBookAuthorv-modeleditBookForm.authorplaceholderEnter author/divdiv classmb-3 form-checkinputtypecheckboxclassform-check-inputideditBookReadv-modeleditBookForm.readlabel classform-check-label foreditBookReadRead?/label/divdiv classbtn-group rolegroupbuttontypebuttonclassbtn btn-primary btn-smclickhandleEditSubmitSubmit/buttonbuttontypebuttonclassbtn btn-danger btn-smclickhandleEditCancelCancel/button/div/form/div/div/div /div div v-ifactiveEditBookModal classmodal-backdrop fade show/divscript部分增加 activeEditBookModal: false, editBookForm: {id: ,title: ,author: ,read: [], },template部分的主界面修改 buttontypebuttonclassbtn btn-warning btn-smclicktoggleEditBookModal(book)Update /buttonscript部分增加函数 toggleEditBookModal(book) {if (book) {this.editBookForm book;}const body document.querySelector(body);this.activeEditBookModal !this.activeEditBookModal;if (this.activeEditBookModal) {body.classList.add(modal-open);} else{body.classList.remove(modal-open);} },handleEditSubmit() {this.toggleEditBookModal(null);let read false;if (this.editBookForm.read) read true;const payload {title: this.editBookForm.title,author: this.editBookForm.author,read,};this.updateBook(payload, this.editBookForm.id); },updateBook(payload, bookID) {const path http://localhost:5001/books/${bookID};axios.put(path, payload).then(() {this.getBooks();this.message Book updated!;this.showMessage true;}).catch((error) {console.error(error);this.getBooks();}); },handleEditCancel() {this.toggleEditBookModal(null);this.initForm();this.getBooks(); // why? },修改函数initForm(): initForm() {this.addBookForm.title ;this.addBookForm.author ;this.addBookForm.read [];this.editBookForm.id ;this.editBookForm.title ;this.editBookForm.author ;this.editBookForm.read []; },浏览器预览如下 结语 如果您觉得该方法或代码有一点点用处可以给作者点个赞或打赏杯咖啡╮(▽)╭ 如果您感觉方法或代码不咋地//(ㄒoㄒ)//就在评论处留言作者继续改进o_O??? 如果您需要相关功能的代码定制化开发可以留言私信作者(✿◡‿◡) 感谢各位大佬童鞋们的支持( ´ ▽´ ) ( ´ ▽´)っ
http://www.w-s-a.com/news/547100/

相关文章:

  • 一个网站建设的成本网站开发过程及要点
  • 监控视频做直播网站中国建筑人才网下载
  • 网站建设公司华网天下买送活动集团网站设计案例
  • 哪些网站比较容易做哪个网站做中高端衣服
  • 做php网站教程wordpress去水印
  • 深圳微网站建设公司哪家好潍坊专业做网站的公司
  • 网站的弹窗广告怎么做软件开发包括
  • 网站开发人员保密做最优秀的自己演讲视频网站
  • 一般做网站要多少钱怎样选择高性价比的建站公司
  • 免费私人网站建设软件高端网站设计平台高端网站设计企业
  • 响应式网站建设的应用场景怎么申请电商平台
  • 怎么做垂直自营网站游戏咨询网站建设目标是什么
  • 建设网站需要给钱吗建立网站三大基础
  • 金融公司网站 htmlwordpress 防火墙
  • 重庆智能建站模板网站投票系统 js
  • 网站维护的内容和步骤网站做什么内容
  • 万网虚拟主机建网站wordpress协调世界时
  • 微网站建设方式应用大全网站
  • 网站速度测速织梦模板下载
  • 环保网站建设公司排名汉阴网站建设
  • 自己做网站的二维码wordpress用户权限在哪改
  • 网站使用说明书网站建设公司的介绍
  • 推广型网站免费建设网站防盗链设置
  • 建设银行网站查开户行网站反链暴增怎么回事
  • centos7做网站软件实施工程师工资一般多少
  • 专业房产网站建设深圳建设交易集团
  • 政务网站建设标准项目经理接到网站开发怎么开展
  • 网站框架设计好后怎么做网站广告销售怎们做
  • asp技校网站保定八大平台公司
  • wordpress网站前端优化网站备案批量查询