ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:626.35KB ,
资源ID:4754099      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4754099.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(教你如何使用djangovuejs快速构建项目模板.docx)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

教你如何使用djangovuejs快速构建项目模板.docx

1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 教你如何使用Django+Vue.js快速构建项目 本篇手把手教你如何快速而优雅的构建前后端分离的项目, 想直接上手请上滑↑ 目录 一、 我为什么要选择Django与VueJS? 二、 Django和VueJS是如何结合起来的? 三、 实际操作 1.创立Django项目 2.创立DjangoApp做为后端 3.创立VueJS项目作为前端 4.使用Webpack处理前端代码 5.配置Django模板的搜索路径 6.配置Django静态文件搜索路径 7.开发环境 8.生产环境( 部署到UCloud)

2、 我为什么要选择Django与VueJS? 首先介绍一下我看重的点: Django(MVC框架)- TheWebframeworkforperfectionistswithdeadlines ---Python ---ORM ---简单、 清晰的配置 ---Adminapp Django仅因为Python的血统, 就已经站在了巨人的肩膀上, 配置管理(SaltStack、 Ansible), 数据分析(Pandas), 任务队列(Celery), RestfulAPI(DjangoRESTframework), HTTP请求(requests), 再加上高度抽象的ORM,

3、功能强大的QueryExpressions, 简单清晰的配置。 着重提一下堪称神器的自带App—Admin, 有了它你再也不用将一些经常变化的配置写在文件里面, 每次增删改都重新发布一次, 你只需要定义出配置的datascheme, 只需要几行代码, DjangoAdmin便为你提供美观, 并带有权限控制的增删改查界面, 而且能够经过ORM为它生成的API来做到定制化的更新, 比如直接读某个wiki上的配置, 自动的写入数据库, 伪代码如下: importpandasaspd settings=pd.read_html('http://某个gitlab的README或者某个redmin

4、ewiki') settings=clean(settings) update(settings) 还能够使用django-celery的celery-beat按Interval/crontab的方式扔更新配置的任务到celery队列里面, 非常重要的是, 这些都能够在DjangoAdmin后台直接配置哦, 还不够优雅? VueJS(MVVM框架)-Vue.js ---数据双向绑定 ---单文件组件 ---清晰的生命周期 ---学习曲线平滑 ---vue-cli 前端是我的弱项, 我需要一个MVVM框架来提升交互和节约时间, 在试过AngularJS, ReactJS,

5、VueJS之后我选择了VueJS, 因为我觉得写VueJS代码的感觉非常接近写Python。 着重提一下单文件组件: 特别清晰, 一个文件包含且仅包含三块: 1.前端渲染的模板 2.专为此模板写渲染逻辑的 3.专为此模板写样式的 这样能够达到什么效果呢? 一个文件一个组件, 每个组件有它自己的逻辑与样式, 你不用关心什么local什么global, CSS样式加载先后、 覆盖问题, 因为它是『闭包』的, 而且『自给自足』。 当然组件之间也是能够通信的, 举个例子, 我

6、有一个组件叫ListULB, 使用表格展示了我拥有的所有ULB(负载均衡), ListULB做了一件事, 从API获取ULB对象列表并for循环展现出来, ListULB能够放到某个页面里, 能够放到弹框里, 放到模态框里, 任何地方都能够, 因为这个组件对外交互的只有API。 如果我现在要写一个组件叫AddVServer, 功能是能够为任意一个ULB对象添加VServer, 我的写法是将在AddVServer组件创立的时候, 将ULB对象传给AddVServer组件, 这样AddVServer组件拿到这个对象, 就能够直接根据对象的ID等, 创立出当前行的ULB的VServer了, 伪代码

7、如下: for**ulb_object**inulbs_list: {{ulb_object.name}} {{ulb_object.id}} 注意双星号包着的对象, 在ListULB组件里面是每行的ULB, 传给AddServer组件之后, 变成了current_ulb对象, 拿到id为current_ulb.id尽情的为它创立VServer吧。如果我要为指定VServer创立RServer呢, 一样的。 看出来了吧, 进行

8、开发之前, 前端组件的结构与数据的结构对应起来能够省好多时间, 数据驱动前端组件, 棒吗? 谁不喜欢优雅的代码呢, 『Datadriveeverything』多么的省脑细胞。 以上就是我选择Django与VueJS的原因。 Django与VueJS是如何结合起来? >>>首先我选择了VueJS的前端渲染, 自然放弃了Django的后端模板引擎渲染。 >>>然后业务逻辑放到了前端, 放弃了Django的View( 其实也就是前后端分离必要的条件) 。 >>>保留了Django的Controller(URLconf)来实现前端路由的父级路由, 能够达到不同页面使用不同的前端框架, 页面

9、内部使用各自独有的前端路由的效果, 万一老大给你配了前端呢, 万一前端只想写ReactJS呢。 >>>保留了Django的Model, 前面说了Django的ORM太好用了, 而且能够配合DjangoAdmin。 因此综合来说就是: M(Django)+C(Django)+MVVM(VueJS)=M+MVVM+C=MMVVMC ( 为了容易理解, 并没有使用Django自称的MTV模式理解, 感兴趣看看我画的图) 总结: 作为以改变世界为己任的DevOps, MVC框架后端渲染的柔弱表现力与繁杂的交互已经不能满足我们了, 因此我选择这样构建项目, 代码块中的修改都会用爽星号括

10、起来, 比如:**changed**。 本文为了精简篇幅, 默认您已经安装了必要的命令行界面( CLI) , 比如vue-cli等。 实际操作 01创立Django项目 命令: django-adminstartprojectulb_manager 结构: ├──manage.py └──ulb_manager ├──__init__.py ├──settings.py ├──urls.py └──wsgi.py 02进入项目根目录, 创立一个app作为项目后端 命令: cdulb_manager pythonmanage.pystartapp

11、backend 即: app名叫做backend 结构: ├──backend │├──__init__.py │├──admin.py │├──migrations ││└──__init__.py │├──models.py │├──tests.py │└──views.py ├──manage.py └──ulb_manager ├──__init__.py ├──settings.py ├──urls.py └──wsgi.py 03使用vue-cli创立一个vuejs作为项当前端 命令: vue-initwebpackfrontend 即:

12、 项目名叫frontend 结构: ├──backend │├──__init__.py │├──admin.py │├──migrations ││└──__init__.py │├──models.py │├──tests.py │└──views.py ├──frontend │├──README.md │├──build ││└──.... │├──config ││├──dev.env.js ││├──index.js ││├──prod.env.js ││└──test.env.js │├──index.html │├──package.j

13、son │├──src ││├──App.vue ││├──assets │││└──logo.png ││├──components │││└──Hello.vue ││└──main.js │├──static │└──test │└──... ├──manage.py └──ulb_manager ├──__init__.py ├──settings.py ├──urls.py └──wsgi.py 结构总结 能够看到项目根目录有两个新文件夹, 一个叫backend, 一个叫frontend, 分别是: >>>backendDjango的一个app

14、 >>>frontendVuejs项目 04接下来我们使用webpack打包VusJS项目 命令: cdfrontend npminstall npmrunbuild 结构: 我引入了一些包, 比如element-ui等, 你的static里面的内容会不同, 没关系index.html和static文件夹相同就够了。 dist ├──index.html └──static ├──css ├── app.42b821a6fd065652cb86e2af5bf3b5d2.css ├── app.42b821a6fd065652cb86e2af5bf3b5d2.

15、css.map ├──fonts │├──element-icons.a61be9c.eot │└──element-icons.b02bdc1.ttf ├──img │└──element-icons.09162bc.svg └──js ├──0.8750b01fa7ffd70f7ba6.js ├──vendor.804853a3a7c622c4cb5b.js └── vendor.804853a3a7c622c4cb5b.js.map 构建完成会生成一个文件夹名字叫dist, 里面有一个index.html和一个文件夹static。 05使用Django的通用视

16、图TemplateView 找到项目根urls.py(即ulb_manager/urls.py), 使用通用视图创立比较简单的模板控制器, 访问『/』时直接返回index.html。 urlpatterns=[ url(r'^admin/',admin.site.urls), **url(r'^$',TemplateView.as_view(template_name="index.html")),** url(r'^api/',include('backend.urls',namespace='api')) ] 06配置Django项目的模板搜索路径 上一步使用了Django

17、的模板系统, 因此需要配置一下模板使Django知道从哪里找到index.html, 打开settings.py(ulb_manager/settings.py), 找到TEMPLATES配置项, 修改如下: TEMPLATES=[ { 'BACKEND':'django.template.backends.django.DjangoTemplates', #'DIRS':[], **'DIRS':['frontend/dist']**, 'APP_DIRS':True, 'OPTIONS':{ 'context_processors':[ 'django.templat

18、e.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] 注意这里的frontend是VueJS项目目录, dist则是运行npmrunbuild构建出的index.html与静态文件夹static的父级目录。 这时启动Django项目, 访问/则能够访问inde

19、x.html, 可是还有问题, 静态文件都是404错误, 下一步我们解决这个问题。 07配置静态文件搜索路径 打开settings.py(ulb_manager/settings.py), 找到STATICFILES_DIRS配置项, 配置如下: #Addforvuejs STATICFILES_DIRS=[ os.path.join(BASE_DIR,"frontend/dist/static"), ] 这样Django不但能够将/ulb映射到index.html, 而且还能够顺利找到静态文件, 此时访问/ulb我们能够看到使用Django作为后端的VueJShelloworl

20、d。 08开发环境 因为我们使用了Django作为后端, 每次修改了前端之后都要重新构建( 你能够理解为不编译不能运行) , 除了使用Django作为后端, 我们还能够在dist目录下面运行以下命令来看效果: hs(即:httpserver) 可是问题依然没有解决, 我想过检测文件变化来自动构建, 可是构建是秒级的, 太慢了, 因此我直接使用VueJS的开发环境来调试, npmrundev: 毫秒, 可是有个新问题, 使用VueJS的开发环境脱离了Django环境, 访问Django写的API, 出现了跨域问题, 有两种方法解决, 一种是在VueJS层上做转发(

21、 proxyTable) , 另一种是在Django层注入header, 这里我使用后者, 用Django的第三方包django-cors-headers来解决跨域问题。 安装 pipinstalldjango-cors-headers 配置( 两步) 1.settings.py修改 MIDDLEWARE=[ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', **'corsheaders.middleware.Cors

22、Middleware',** 'mon.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] 这里要注意中间件加载顺序, 列表是有序的哦。 2.settings

23、py添加 CORS_ORIGIN_ALLOW_ALL=True 至此, 我的开发环境就搭建完成了。 09生产环境部署( 部署到UCloud) 接下来我们尝试将项目部署到UCloud云主机上, 主机管理列表, 如下所示: **这里注意记住你的外网IP, 下面的IP替换成你的** 环境搭建与部署 登录主机, 用你刚填写的密码: .**.75 CentOS系统能够使用yum安装必要的包 #如果你使用git来托管代码的话 yuminstallgit #如果你要在服务器上构建前端 yuminstallnodejs yuminstallnpm yumins

24、tallnginx 我们使用uwsgi来处理Django请求, 使用nginx处理static文件( 即之前build之后dist里面的static, 这里默认前端已经打包好了, 如果在服务端打包前端需要安装nodejs, npm等) 。 安装uWsgi yuminstalluwsgi #或者 pipinstalluwsgi 我们使用配置文件启动uwsgi, 比较清楚。 uwsgi配置文件: [uwsgi] socket=127.0.0.1:9292 stats=127.0.0.1:9293 workers=4 #项目根目录 chdir=/opt/inner_ulb

25、manager touch-reload=/opt/inner_ulb_manager py-auto-reload=1 #在项目跟目录和项目同名的文件夹里面的一个文件 module=inner_ulb_manager.wsgi pidfile=/var/run/inner_ulb_manager.pid daemonize=/var/log/inner_ulb_manager.log nginx配置文件: server{ listen8888; server_name120.132.**.75; root/opt/inner_ulb_manager; access

26、log/var/log/nginx/access_narwhals.log; error_log/var/log/nginx/error_narwhals.log; location/{ uwsgi_pass127.0.0.1:9292; include/etc/nginx/uwsgi_params; } location/static/{ root/opt/inner_ulb_manager/; access_logoff; } location^~/admin/{ uwsgi_pass127.0.0.1:9292; include/etc/nginx/uwsgi_

27、params; } } /opt/inner_ulb_manager/static即为静态文件目录, 那么现在我们静态文件还在frontend/dist怎么办, 不怕, Django给我们提供了命令: 先去settings里面配置: STATIC_ROOT=os.path.join(BASE_DIR,"static") 然后在存在manage.py的目录, 即项目跟目录执行: pythonmanage.pycollectstatic 这样frontend/dist/static里面的东西就到了项目根目录的static文件夹里面了。 那么为什么不直接手动把构建好的dist

28、/static拷过来呢, 因为开始提过Django自带的App: admin也有一些静态文件( css,js等) , 它会一并collect过来, 毕竟nginx只认项目跟目录的静态文件, 它不知道django把它自己的需求文件放到哪了。 开头说过Django配置灵活, 那么我们专门为Django创立一个生产环境的配置prod.py, prod.py与默认settings.py同目录。 #导入公共配置 from.settingsimport* #生产环境关闭DEBUG模式 DEBUG=False #生产环境开启跨域 CORS_ORIGIN_ALLOW_ALL=False

29、 #特别说明, 下面这个不需要, 因为前端是VueJS构建的, 它默认使用static作为静态文件入口, 我们nginx配置static为入口即可, 保持一致, 没Django什么事: STATIC_URL='/static/' 如何使用这个配置呢, 进入wisg.py即uwsgi配置里面的module配置修改为: importos fromdjango.core.wsgiimportget_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE","**inner_ulb_manager.prod**") application=get_wsgi_application() 启动uwsgi: uwsgi--iniinner_ulb_manager.ini 启动ngingx: servicenginxstart 至此, 部署就完成了。 10效果图 List组件: 传单个ULB对象给Detail组件使用即可。 Detail组件: 当然里面还实现了前面提到的ULB的VServer创立, VServer的RServer的创立等。 了解更多内容/购买云服务器, 请浏览UCloud云计算官网

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服