全栈“食”代:用Django+Nuxt实现美食分享网站(一)腾讯云开发者社区

在这个项目中,我们用pipenv[5]来管理Python项目的环境依赖。Pipenv是Python社区偶像级大师KennethReitz牵头开发的开发流程优化工具,立志集所有项目管理工具(Node的npm、Ruby的bundler、PHP的composer等等)的优势为一体。我们通过下面的命令安装pipenv,并创建项目的依赖环境:

$pipinstallpipenv$pipenvshell如果看到命令提示符前面出现(recipes_app-nV3wuGJ1)的提示(后面那串随机字符串可能不一样),就表明我们已经成功地创建了项目独有的虚拟环境!我们接着安装Django“三件套”:

安装命令如下:

(recipes_app-nV3wuGJ1)$pipenvinstalldjangodjango-rest-frameworkdjango-cors-headers这时pipenv便产生了Pipfile文件,它的作用就类似Node项目中的package.json文件:

(recipes_app-nV3wuGJ1)$pythonmanage.pymigrate(recipes_app-nV3wuGJ1)$pythonmanage.pycreatesuperuser按照问题输入信息即可。要记住用户名和密码哦!然后运行开发服务器:

熟悉的界面,但是——没什么东西,而且全是英文!别担心,后面我们会一个个搞定。

接下来我们将实现本项目所需要用的所有API。对,你没有听错,我们会在这一步实现所有后端接口,大概只10分钟左右可以敲完!这就是Django的宣言:

Thewebframeworkforperfectionistswithdeadlines.

首先,在全局配置文件settings.py中做如下改动:

具体代码如下:

我们从第一步开始,完成菜谱Recipe数据模型如下:

第二步,为core子应用配置相应的后台管理功能。非常简单,只需注册定义好的Recipe模型:

fromdjango.contribimportadminfrom.modelsimportRecipe#Registeryourmodelshere.admin.site.register(Recipe)第三步,定义序列化器serializers.py(脚手架并不会自动创建,需要手动创建)。序列化器是DjangoRestFramework提供的功能,能够非常方便地将Django数据模型序列化成相应的JSON数据格式。在这里,我们定义一个RecipeSerializer,并在classMeta中指定对应的数据模型为刚才创建的Recipe,并选择相应的字段展示:

fromrest_frameworkimportviewsetsfrom.serializersimportRecipeSerializerfrom.modelsimportRecipeclassRecipeViewSet(viewsets.ModelViewSet):serializer_class=RecipeSerializerqueryset=Recipe.objects.all()只需指定serializer_class(序列器类)和queryset(模型查询集),就自动定义好了模型的添加、删除、查询和修改!虽然视图集非常强大,但是如果要实现更加灵活的业务逻辑,那么还是要为每个接口定义单独的视图类才行。

注意在Django路由定义中不包括HTTP方法,具体的HTTP方法可以在视图中读取并判断。

最后一步,我们将core子应用中的路由接入全局路由:

(recipes_app-nV3wuGJ1)$pythonmanage.pyrunserver由于DjangoRESTFramework为我们提供了测试API的Web界面,因此这里就不用Postman等工具进行测试了。用浏览器访问localhost:8000/api/recipes[9],就进入了如下所示的API测试页面:

这个页面的下方还有添加数据(发起POST请求)的表单,我们填一些数据,然后点击POST按钮:

然后再次访问食谱列表页面,就有我们刚刚添加的食谱了!此外,你还可以尝试访问单个食谱的详情页面(例如localhost:8000/api/recipes/1[10]),并且可以通过Web页面直接修改或删除哦!

Django的MTV架构固然优秀,但是随着现在的业务逻辑越来越多地向前端倾斜(也就是现在流行的富前端应用),其中的T(Template)需要更强大的武器来解决,这里就是我们的第二位主角Nuxt。

我们将把所有的前端代码放到client目录中,不过无需自己创建,我们调用nuxt的脚手架来创建前端应用:

$npxcreate-nuxt-appclient之后脚手架应用会询问一系列问题,按下面的截图进行选择(当然作者名填自己):

我们对Nuxt脚手架生成的目录结构稍作讲解。可以看到client目录下有以下子目录:

本项目所用到的图片资源请访问我们的GitHub仓库[11],并下载到对应的目录中。

我们在client/pages中创建index.vue文件,并在其中实现我们的前端首页:

模板(Template)+脚本(Script)+样式(Style),经典的Vue.js组件。

我们刚刚创建了pages目录下的index.vue文件,这意味着当访问根路由/时,这个文件将被访问到。通过npmrundev运行我们的前端页面(记得在client子目录下运行!),可以看到:

真是让人食欲大开!

接下来我们将演示如何展示数据,并实现食谱列表页面。

首先,实现将会在多个页面中反复使用的食谱卡片组件RecipeCard如下:

在这个组件中,我们定义了两个props,分别是recipe(代表食谱对象)和onDelete(删除时的回调函数),并在模板中使用这两个成员。

在实现第二个页面之前,我们有必要先了解一下Nuxt的路由功能——通过pages目录下的文档结构,就可以自动生成vue-router的路由器配置!

例如我们这样安排pages下面的目录结构:

pages├──README.md├──index.vue└──recipes├──_id│├──edit.vue│└──index.vue├──add.vue└──index.vue_id目录(或者其他以单下划线开头的目录或.vue文件)被称作是动态路由(DynamicRouting),可以接受参数作为URL的一部分。上面的pages目录自动生成下面的router:

创建食谱列表页面pages/recipes/index.vue(先使用假数据填充),代码如下:

到这儿,我们分别实现了这个全栈食谱网站的前端和后端应用,这篇教程的第一部分也就结束了。在接下来的教程中,我们将实现前后端之间的通信,并进一步实现食谱的详情及添加页面,不见不散!

想要学习更多精彩的实战技术教程?来图雀社区[13]逛逛吧。

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

[9]

localhost:8000/api/recipes:localhost:8000/api/recipes

[10]

localhost:8000/api/recipes/1:localhost:8000/api/recipes/1

THE END
1.朱莉娅·图尔申教家庭厨师用图表化食谱!(独家)乳酪厨师奶酪《What Goes With What》的作者因开发出美味可口、简单易做且近乎零失误的食谱而闻名 打开网易新闻 查看精彩图片 朱莉娅·图尔申用图表的形式来构思她的食谱,也希望您能这么做。 “我认为这些图表确实反映了我一直以来对烹饪的思考方式,只是在我想到用图表之前,我真的没有合适的工具来表达它,”这位驻纽约的美食作https://m.163.com/dy/article/JI4M7FDI05568E38.html
2.英文的海报设计素材网站图片免费下载共有1604448个英文的海报设计相关内容为您呈现 英文海报设计海报设计英文海报设计 英文如何做好海报设计师英文ai英文字体海报设计图英文文字ai海报设计图ai英文图形海报设计图英文文字ai海报设计ai英文单词海报设计ai英文海报设计教程视频英文ai海报设计图ai中英文海报设计ai英文海报设计教程图片英文海报设计ai教程图片ai海报https://www.zcool.com.cn/tag/ZNzEyNjU0MA==.html
3.西餐菜品英语翻译指南:从开胃菜到甜点!西餐文化博大精深,其菜式名称更是琳琅满目。从开胃菜到主菜,从配菜到甜点,每一味佳肴都拥有一个优雅且精准的英文名称。本文将从四方面详细阐述西餐菜品英文名称的表达方式,带领读者领略西餐语言的魅力。 一、开胃菜 西餐中的开胃菜,旨在刺激食欲,为之后的用餐做好准备。 https://www.coffee.cn/xican/post/482200.html
4.BabyCenterTheMostAccurate&TrustworthyPregnancy&Find information from BabyCenter on pregnancy, children's health, parenting & more, including expert advice & weekly newsletters that detail your child's…https://babycenter.com/
5.www.scmc百合做运动教程图片 [夜桜字幕组]2021年2月3D作品合集[BIG5+GB] 人人想人人爱人人做m 少妇高潮久久久久久久久电 人妻 少妇 探花 日韩 成人无码看片免费久久久 给女儿吃了春药C了他 免费看多人草逼视频中文视频 美女不遮阴网站 天天日电影 tttzzz668.su黑料不打烊痞幼 餐桌底下的手伸进了裙底啪啪小说 http://www.scmc-xa.com/xxxr/544046.htm
6.英文原版Tartine面包甜点食谱烹饪美味面包烘培教程英文版面包片:68个全新的食谱+55个全新的 英文原版 Tartine 面包甜点食谱 烹饪美味面包烘培教程 英文版 进口英语书籍 纽约时报2019年推荐食谱 配送 至 选择地区查看预计配送信息 快递:0元起 服务支持退换 · 7天无理由退货 · 收货后结算 参数纸质; 版本 该商品所属店铺评价 https://h5.youzan.com/v2/goods/3nwlo7m29gyuq7m
7.ItButton网页图片采集插件Chrome插件图片教程收集从你最喜欢的食物的食谱,你想阅读的文章,你的家的想法,和更多的食谱! Pin It Button插件下载与安装 Pin It Button插件哪里可以下载?你可以从chromePin It Button插件英文介绍 === Pin the things you find on the web Save creative ideas from around the web with the official Pinterest browser https://www.cnplugins.com/office/pin-it-button/detail.html
8.胡迪尼软件Houdini20.5附注册机+安装教程英文破解版下载胡迪尼软件Houdini 20.5【附注册机+安装教程】英文破解版 软件简介:Houdini是由加拿大Side Effects Software Inc.(简称SESI)公司开发的3D计算机图形软件,这是一家由Kim Davidson和Greg Hermanovic于1987年创立的加拿大公司。胡迪尼是在Prisms的基础上重新开发的,可以在Linux、Windows、Mac OS等操作系统上运行,是完全基https://software.3d66.com/list/detail_9140.html
9.电影设定集哈利波特(英文) 哈利波特超话 HarryPotter超话 神奇动物超话 #电影设定集# 【独家书讯】今年洞察出版Crochet Pattern Book哈利波特钩织魔法:魔法世界终极钩织指南(暂译)与之前针织衣物的教程 ?Shaken: Drinking with James Bond and Ian Fleming, the Official Cocktail Book007官方鸡尾酒食谱~ https://weibo.com/a/hot/7555331107362817_1.html?type=new&u=1975551291&m=4237381198447326&cu=5171091285
10.原创教程:面包进阶篇厨师机教程: 很多人问“揉多长时间”“摔多长时间”这种问题。 频率问题无法回答,比如我的速度是一分钟揉20下,你的速度是一分钟揉40下,那么就算我说揉一分钟也是白搭。 但如果用厨师机的话,则可以将教程量化到分钟甚至秒。 1.首先需要精确按照食谱量取一切。如果无法精确量取,那么我也帮不了你。 https://www.douban.com/note/284318212
11.ZendFramework食谱PHP教程php教程Zend Framework食谱_PHP教程2016-07-13 17:35 999浏览 原创 ZendFramework官网:http://framework.zend.comZend Framework中文团队:http://www.phpeye.com 论坛:http://www.phpeye.com/bbsZF手册翻译情况及最新中文手册在线阅读,通常中文手册有新章节翻译完毕,Haohappy都会重新编译一份放到phpeye上去,保证提供最新鲜https://m.php.cn/faq/301782.html
12.布拉肠粉做法教程英文版名菜谱布拉肠粉做法教程英文版 布拉肠粉做法教程 布拉肠粉是广东省的传统美食,是一道口感独特、味道鲜美的小吃。以下是制作布拉肠粉的步骤: 准备材料:猪肠、米粉、虾米、瘦肉、葱、姜、蒜、盐、酱油、糖、胡椒粉、生抽、老抽、花生油。 将猪肠清洗干净,切成约10厘米长的段。https://www.mingcaipu.com/4bafdc05ec.html
13.综合英语教程2词汇表6篇(全文)综合英语教程2词汇表 第1篇 第2册词汇小结 Unit 1accomplish: 达到,完成,实现 accomplish one’s purpose / accomplish one’s mission / accomplish-ment: 成就,成绩 She’s known for her accomplish-ment in improving the region’s hospitals.apply: 适用,应用 They applied the rules to new members onlyhttps://www.99xueshu.com/w/filep71v1aug.html
14.www.xmpsam.com/xxxr80686181.html我姐姐的朋友是电影演员英文 我丰满的?子3 207.49MB 2129好评 高情19拘黄色毛片 91插插插白萝卜最佳搭档食谱 日本一区二区成人电影 亚洲毛片一区二区相沢中文字幕 46.50MB 3477好评 中国人马配速45分钟视频教程 羞羞动画入口 日韩美女黄色网站一级大片 64.65MB 47%好评60人) 男生搞http://www.xmpsam.com/xxxr80686181.html
15.web.lygtjzx.com/nodenews/x19064334.htm11月13日,国家发展改革委民营经济发展局局长魏东做客新华社推出的新一期“中国经济圆桌会”大型全媒体访谈节目,与多名民营企业家同台,共同为促进民营经济发展壮大支招。|。 特朗普在社交平台发文称史密斯“精神错乱”,这名特别检察官在16日晚间给特朗普发了一封信函,通知特朗普是2021年国会大厦骚乱事件大陪审团调查的目http://web.lygtjzx.com/nodenews/x19064334.htm
16.ting.echo91.cn/mmmj/014337.shtml欧美熟妇色英文 人妖又长又粗又大的巴 05.95MB 02%好评94人) 91娇喘白丝 百合做运动doi视频教程免费 91丨九色丨国产熟女 ?熟女 84.89MB 21%好评36人) 想看日本操逼视频马上播放试看30分钟 日日操免费视频 00嫩B碰 29.11MB 97%好评4669人) 一根棉签怎么https://ting.echo91.cn/mmmj/014337.shtml