全栈“食”代:用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.RECIPE13道菜谱 跟我吃瘦成一道闪电 大润小厨 516850 13132 Unique包菜卷 吃一只力气气 623612 33945 胡萝卜配西兰花 风中小荷 27292476 222276 蔬菜瘦身汤 独佳记忆2010 217455 9156 黄瓜胡萝卜卷 食尚煮易爱下厨 490318 13152 什锦蔬菜减肥汤 SunJerry 80651 3688 家常开水白菜 愿只如初见 346138 5896 https://m.douguo.com/caidan/4112149/
2.美食推荐:烧汁牛仔骨海鲜沙拉配牛油果蟹黄豆腐制作方法洋葱牛仔骨500克。 辅料: 洋葱半个克、鸡粉8克、糖3克。 调味料: 家乐和味烧汁20克、盐4克。 烹饪步骤: 1、牛仔骨以盐、糖、鸡粉腌制一小时; 2、洋葱切丝备用; 3、牛仔骨走油,再下锅半煎炸至八成熟; 4、爆香洋葱丝,加上家乐烧汁快炒,牛仔骨回锅至收干烧汁。 https://www.163.com/dy/article/JIJ3VI1J0553TKGX.html
3.步骤图高笋炒肉片(万能炒菜模板)的做法【高笋炒肉片(万能炒菜模板)】01.腌肉。拿一个容器放猪瘦肉片,加酱油,香油,姜,淀粉腌制肉片10~20分钟。此步骤可以增加肉的香味和嫩度。,11.备菜。高笋去皮,切片。切蒜和小米椒,小米椒视个人口味加多加少,切5个炒出来吃很爽。,21.热锅下油,加蒜和小米椒爆炒出香味https://hanwuji.xiachufang.com/recipe/107326260/
4.使用微信小程序开发制作一个简易的菜谱分享应用美食列表微信小程序pages/recipeDetail/recipeDetail.wxss:用于编写菜谱详情的样式。 pages/recipeUpload文件夹:用于创建菜谱上传页面。 pages/recipeUpload/recipeUpload.js:用于处理菜谱上传的逻辑。 pages/recipeUpload/recipeUpload.wxml:用于编写菜谱上传的模板。 pages/recipeUpload/recipeUpload.wxss:用于编写菜谱上传的样式。 https://blog.csdn.net/qq_67153941/article/details/139729668
5.菜单模板菜单设计模板浏览我们海量的菜单模板,即使你不是设计师,也能创建令人惊艳的设计。免费个性化。https://www.canva.cn/learn/recipe-design-template/
6.JamieOliverOfficialwebsiteforrecipes,books,TVshowsJamieOliver.com is your one stop shop for everything Jamie Oliver including delicious and healthy recipes inspired from all over the world, helpful food tube videos and much more.https://www.jamieoliver.com/
7.食谱英文翻译结果:食谱的英文翻译为“recipe”。 应用场景:“recipe”这个词在日常英语交流中非常常见,通常用于描述烹饪的步骤和方法。它可以用在烹饪书籍、电视节目、网站或日常生活中,当人们想要分享或学习如何制作某道菜肴时。 造句例句: a. 我正在寻找一个制作巧克力蛋糕的食谱。 I'm looking for ahttps://localsite.baidu.com/site/wjzsorv8/8cd47d9a-7797-42f3-9306-b902ded71161?qaId=107777&categoryLv1=%E6%95%99%E8%82%B2%E5%9F%B9%E8%AE%AD&efs=2&ch=54&srcid=10014&source=natural&category=%E8%8B%B1%E8%AF%AD&eduFrom=136&botSourceType=46
8.幼儿园每周饮食食谱公示可爱绿色模板公众号模板相关标签: 简约 黄色 绿色 GIF动图 清新 学校 健康 菜谱食谱 动态 校园 幼儿园 幼儿园食谱 每周食谱 作品简介 135编辑器提供的幼儿园每周饮食食谱公示可爱绿色模板模板样式,此作品素材ID:141309,该素材可用于:简约、黄色、绿色、GIF动图、清新、学校、健康、菜谱食谱、动态、校园、幼儿园、幼儿园食谱、每周食谱https://www.135editor.com/editor_styles/141309.html
9.Forthepizzarecipe,IwillgetbacktoyouASAP.的翻译是aVolt provides a set of basic but powerful control structures for use in templates 伏特提供一套基本,但强有力的控制结构用于模板[translate] aThe fabrics recall the reassuring feel of tricot, and the flannels are teamed with exquisite yarns such as cashmere, alpaca, Shetland and kid mohair. 织品http://eyu.zaixian-fanyi.com/fan_yi_14062251
10.尤克里里Wordsthatareoftenconfused经常混淆的单词A recipe is a set of instructions for cooking something. A recipe是菜谱 A receipt is a piece of paper you are given after you pay for something. A receipt是收据 A prescription is a piece of paper a doctor gives you to get the medicine you need. A prescription是处方 相关http://m.hujiang.com/en_ukulele/p1201582/
11.SuperCookSupercook is a recipe search engine that lets you search by ingredients you have at home. Find thousands of recipes you can make right now with the ingredients you have available at home. Supercook can help you save hundreds on grocery bills by showing https://www.supercook.com/
12.家常菜谱大全(MyRecipe)软件介绍 家常菜谱大全(MyRecipe)是一个简单易用、设计贴心的菜谱家常菜做法软件。它收录了美食天下菜谱、菜谱大全、夏季菜谱等等,可以帮助厨房新手轻松做出美味佳肴,也可以帮助厨艺高手整理记录自己的菜谱。它内置的几项功能更可以帮助你制定饮食计划,管理购物清单。相信它可以给您的生活带来极大的便利。 https://m.crsky.com/soft/25784.html