全栈“食”代:用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.RecipeApp一款基于Flutter的食谱应用UI模板recipeappRecipe App UI template using Flutter. 项目地址: https://gitcode.com/gh_mirrors/re/recipeapp 1. 项目基础介绍 RecipeApp 是一个使用 Flutter 编写的食谱应用 UI 模板。该项目旨在为开发者提供一个现成的应用界面框架,以便快速搭建具有吸引力的食谱应用。Flutter 作为 Google 开发的一种跨平台应用开发https://blog.csdn.net/gitblog_00672/article/details/144078015
2.每周食谱营养餐食快乐成长永康市职业技术学校第十周食谱https://mp.weixin.qq.com/s?__biz=MzIzMDQwNjk2MQ==&mid=2247503490&idx=1&sn=0f1182a4ab9accc6c80f33a163f18e46&chksm=e9fa1aa3c403a765d9f4e042ad3fd23738fe6cc822328a83ddb1777bdd2514f7e3e7b194ee31&scene=27
3.recipe图片免费下载recipe素材recipe模板千图网为您找到1266张recipe相关素材,千图网还提供recipe图片,recipe素材, recipe模板等免费下载服务,千图网是国内专业创意营销服务交易平台,一站式解决企业营销数字化、协同化,实现营销转化效果增长!https://www.58pic.com/tupian/recipe.html
4.食谱设计在线食谱制作食谱图片模板在线设计平台Canva可画提供了海量的食谱设计模板,覆盖绝大多数食谱设计场景,只需选择喜欢的模板进行制作,即可轻松在线设计出精美的食谱。https://www.canva.cn/create/recipe/
5.图像的食谱(recipeImage)图片png成套合集游戏爱给网提供海量的合集成套资源素材免费下载, 本次作品为png 格式的图像的食谱(recipeImage), 本站编号32953257, 该合集成套素材大小为161b, 分辨率为37 x 35, 作者为lescarlson, 更多精彩合集成套素材,尽在爱给网。 找到更多"游戏2d素材/合集成套/图像的食谱"资源搜索更多 https://www.aigei.com/item/ui_storefront_0_39.html
6.recipe模板为啥要同时使用xsd和xml文件,xml和xsd文件区别?在使用recipe模板中,XSD文件定义了模板中应该包含哪些元素、属性、命名空间等,而XML文件则是使用XSD文件定义的结构来描述具体的食谱。XML文件可以包含一到多个食谱,每个食谱都包含名称、配料、指导等元素和属性。 综上所述,recipe模板同时使用XSD和XML文件来定义和序列化XML文档的结构和内容,并使编写XML文档更加简单、清https://m.sohu.com/a/715489420_121124363
7.每周食谱秋冬饮食教育校园幼儿园清新可爱黄色模板相关标签: 简约 黄色 GIF动图 卡通/漫画 可爱 清新 菜谱食谱 动态 食谱推荐 每周食谱 作品简介 135编辑器提供的每周食谱秋冬饮食、教育校园幼儿园、清新可爱、黄色模板模板样式,此作品素材ID:151096,该素材可用于:简约、黄色、GIF动图、卡通/漫画、可爱、清新、菜谱食谱、动态、食谱推荐、每周食谱相关的微信公众号http://www.135plat.com/editor_styles/151096.html
8.Steaks&Chops餐饮降食谱HTML模板Steaks&Chops是一款功能齐全,功能丰富且设计精美的Bootstrap 4主题,适用于食谱相关网站,这个主题非常适合专业厨师和烹饪专家,Food Recipe Bootstrap 4主题通过完整的信息和视频支持,可以轻松分享烹饪知识。https://www.22vd.com/45668.html
9.Cookiteerv1.4.8–食物和食谱WordPress主题Cookiteer – 食物和食谱 WordPress 主题。 Cookiteer 是一个干净、优质和现代的 WordPress 主题,可用于为多种场景创建任何网站。 Cookiteer 可用于的一些模板包括:美食博客、餐厅网站、食谱教程等等 Cookiteer 具有创建令人惊叹的网站所需的所有功能。 这个主题几乎可以响应任何屏幕尺寸,这样您就可以减少对界面的担忧,https://themez.cc/3315.html
10.幼儿园本周食谱公布可爱绿色模板公众号模板幼儿园本周食谱公布可爱绿色模板每周食谱WEEKLY RECIPE 宝贝饮食,健康成长不容忽视。饮食是宝贝健康成长的重要因素,良好的饮食习惯可以帮助宝贝获得足够的营养和能量,促进身体发育和智力发展。 MONDAY·周一 早餐Breakfast火龙果、红枣糯米粥 午餐Lunch 冬瓜粉丝汤、虾仁日本豆腐、玉米排骨汤,娃娃菜烩虾仁、米饭、松仁鸡肉丸https://www.135editor.com/editor_styles/140914.html
11.MyRecipesSaveandorganizetheworld’sbestrecipesEasily find, save, and organize the world’s best recipes with MyRecipes. Use top food sites like Food & Wine and EatingWell to create a new recipe home.http://www.myrecipes.com/
12.Save,Publish&ShareRecipeswithHomeCooksWorldwideShow your appreciation to recipe writers with Cooksnaps. Let them know their recipe work for you. Download About Us Our mission at Cookpad is to make everyday cooking fun, because we believe that cooking is key to a happier and healthier life for people, communities and the planet. We https://cookpad.com/
13.食谱照片设计师–remove.bg通过直观的界面,我们的食谱照片设计师可以使您的菜品脱颖而出。 使用我们的模板,可以在几秒钟内创建出奇妙的食物图片。https://www.remove.bg/zh/t/recipe-photo-designer
14.免费食谱Logo设计DesignEvoLogo制作软件DesignEvo的在线食谱logo设计软件提供了很多精致的模板,帮助你轻松制作出令人惊叹的食谱logo。我们所有的模板都是专业设计且可自由定制的。你随时可以使用我们精美的模板,丰富的图标和形状等为餐厅饭店、食疗中心、养生会所等设计一个专业的食谱logo。即使你对设计一无所知也没关系,我们将竭诚为你服务,赶快来试试吧!http://www.designevo.com/cn/create/logos/recipe.html
15.菜谱画册相关文章列表极简食品食谱菜单杂志设计INDD画册模版素材 Affilie Food Recipe Cookbook 画册模板 4年前 24页食品美食食谱画册排版设计INDD模板素材 Piebble Food Recipe Cookbook 画册模板 4年前 时尚简约食品菜品食谱宣传手册设计INDD模板 FOODIES Cookbook & Food Recipe https://zaodao.net/tag/5045
16.下厨房破壁机养生食谱 Timmy么血14 做过 自制饮品、奶茶~杨枝甘露 洋yang吖0 做过 粉丝炒包菜 基本告别外卖的girl90 做过 清蒸山药肉丸(宝宝辅食) ☆簧尐袼☆13 做过 蒜香鸡翅|孩子们的最爱 古典美人美食739 做过 时令食材 全部 萝卜 南瓜 红薯 白菜 https://www.xiachufang.com/
17.Cook'sIllustratedRecipesThatWorkWeTestItAllWe explore the science behind what makes a recipe tick. We ask questions, conduct experiments, and get answers—delicious answers that you won't find anywhere else. Join Us in the Lab Good sciencemakes great food We believe that a little science goes a long way to helping you understand whhttp://www.cooksillustrated.com/
18.AmazonIoTGreengrass组件配方参考查看食谱格式,确认您没有遗漏任何字段。 食谱格式 在为组件定义配方时,需要在配方文档中指定以下信息。同样的结构适用于YAML和JSON格式的食谱。 RecipeFormatVersion 食谱的模板版本。选择以下选项: 2020-01-25 ComponentName 此配方定义的组件的名称。在每个区域中,组件名称必须是唯一的 Amazon Web Services 账户 。https://docs.amazonaws.cn/greengrass/v2/developerguide/component-recipe-reference.html
19.有道词典Listing 11 shows the recipe template with the addition of a link_to_remote helper method call. 清单11中的菜单模板增加了link _ to _ remote辅助方法调用。 6. 42kb And I did tweak the method a wee bit: the recipe card included suggests an all-in-one method, while I prefer to cream https://m.youdao.com/singledict?q=method-recipe:&dict=blng_sents&more=true