全栈“食”代:用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.英语词汇recipe怎么读,是什么意思,单词翻译读音固定搭配用法单词recipe 释义recipe n 1 ~ (for sth) set of instructions for preparing a food dish, including the ingredients required 烹饪法; 食谱 [attrib 作定语] recipe books, cards 烹饪书、 食谱卡片. 2 ~ for sth (fig 比喻) method of achieving sth 方法; 秘诀; 诀窍 What is your recipe for successhttp://ec.newdu.com/28116.html
2.22道倾倒即煮美食,轻松告别厨房压力食谱牛排素食鸡肉三文鱼跟厨房的烦恼说拜拜,用这些简单的“一倒一煮”食谱,备餐能轻松不少。 获取食谱 橄榄园素食土豆团子汤 用这款容易做的橄榄园素食土豆团子汤,简化您的烹饪步骤。 获取食谱 猎人烩鸡 这道意大利菜味道特别棒,跟意大利面、玉米粥或者土豆泥搭配起来都很不错。 https://www.163.com/dy/article/JI7CIN9J05568E4N.html
3.restaurant,Chinesefood,Westernfoodmenu,recipemenu下载得到文件列表 酒店饭店中餐西餐菜单食谱菜谱菜牌餐牌酒水单英文英语翻译(Hotel, restaurant, Chinese food, Western food menu, recipe menu, dish brand, drink list, English translation).doc相关文档 文档介绍文档介绍:酒店饭店中餐西餐菜单食谱菜谱菜牌餐牌酒水单英文英语翻译(Hotel, restaurant, Chinese food,https://m.taodocs.com/p-107469553.html
4.菜谱,menu英语短句,例句大全英文短句/例句 1.he asked, looking at the menu.他边看着菜谱边问艾玛。 2.copy a recipe out of a book从书上抄下一份菜谱 3.Nutritional Appraisal and Recipe Optimization of 《Recipe of Chinese Famous Dishes : Beijing Style》;《中国名菜谱·北京风味》营养评估及菜谱优化 4.We use different spiceshttps://www.xjishu.com/en/061/y373680.html
5.食品菜谱的英语怎么说水滴英语作文网食品菜谱的英文名称是 "recipe"。 Recipe 是英语单词,来自拉丁文 "recipere",意思是 "接受、拿取"。在英文中,recipe 常用来指代一组食谱或者烹饪方法,告诉人们如何准备和烹饪食物。 下面是一些英文例句: "Can you give me the recipe for your famous chocolate cake?" (你能告诉我你著名的巧克力蛋糕的食谱吗?https://www.adreep.cn/gz/ask-244147.html
6.recipe是什么意思,n.烹饪法,食谱;诀窍,方法翻译英文: What's your recipe for success?中文: 你取得成功有什么窍门?英文: Bring in your recipe, right?中文: 鼓弄你的食谱,对吧?英文: ) for a vanilla ice cream recipe.中文: )只为了取得一份制作香草冰淇淋的配方。英文: Can you tell me the recipe?中文: 您能把菜谱告诉我吗?https://dict.bioon.com/m/detail.asp?id=33d7496062
7.n.菜谱;配方;处方,recipe,音标,读音,翻译,英文例句,英语词典By using of single-constant Kubelka-Munk theory, the basic equations used in the recipe formulation as well as the recipe correction are derived based on the concept of spectral visual response fitting in matrix form. 本文对光谱拟合配色算法进行了讨论,并运用单常数库贝尔卡-芒克理论,导出了基于光谱http://www.dictall.com/indu53/13/53134757771.htm
8.烹饪达人宣言附整只烧鸡食谱双语达人双语阅读RECIPE 菜谱: INGREDIENTS 配料: 1 chicken, about 3 1/2 pounds, spatchcocked (split down the backbone, breast left intact and unsplit) 1只鸡,约3.5磅,去除脊骨,鸡胸保持完整 Kosher salt, to taste 粗盐,调味用 Freshly ground pepper, to taste 现磨胡椒,调味用 2 tablespoons unsalted butter 2汤匙不https://www.kekenet.com/read/201410/336819.shtml
9.recipe的翻译是:食谱中文翻译英文意思,翻译英语recipe 青云英语翻译 请在下面的文本框内输入文字,然后点击开始翻译按钮进行翻译,如果您看不到结果,请重新翻译! 翻译结果1翻译结果2翻译结果3翻译结果4翻译翻译结果1复制译文编辑译文朗读译文返回顶部 食谱 翻译结果2复制译文编辑译文朗读译文返回顶部 菜谱 翻译结果3复制译文编辑译文朗读译文返回顶部 http://eyu.zaixian-fanyi.com/fan_yi_13429260
10.recipe应该译成“专题”,cookbook应该译成“专题手册”在有关编程的英文书籍中,经常遇见单词 recipe 。 一般的中文翻译把它直译成“菜谱、菜单”之类。 我最近在读 《PythonMachine LearningCookbook》(作者 Prateek Joshi), 书中多处出现 recipe 一词,例如,本书正文前的第一页,写着: Python Machine Learning Cookbook https://blog.csdn.net/lawme/article/details/79576243
11.食谱:卡多雷蜘蛛烤肉物品NFU魔兽世界1.12数据库概要 等级: 5 购买:40 卖出:10 截图 WowheadWowhead 英文名:Recipe: Kaldorei Spider Kabob复制 中文代码英文代码吃瓜台代码提交G团成交价 相关联的信息 1-1of1 名字 等级 需要 阵营 奖励 类别 中文:卡多雷的菜谱 英文:Recipe of the Kaldorei71双方 http://db.nfuwow.com/60/?item=5482
12.recipea recipe for disaster/success 造成灾(災)难(難)的因素/成功的秘(祕)诀(訣)zàochéng zāinàn de yīnsù/chénggōng de mìjué 在这些条目还发现'recipe': 在英文解释里: formulation-hot and sour soup-ingredient-secret ingredient 中文: 食谱-烹饪法-菜谱 https://www.wordreference.com/enzh/recipe
13.recipe是什么意思,recipe中文翻译怎么读1. Eachrecipespecifies the size of egg to be used. 每种菜谱都具体规定了所用鸡蛋的大小。 来自柯林斯例句 2. The followingrecipeis a statement of another kind—food is fun! 下面的食谱是另一种观点的表现——食物可以带来乐趣! 来自柯林斯例句 https://3325.cn/dict/recipe/