全栈“食”代:用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.AppStore上的“CookingRecipes:MealPlanning”Cook like a Chef together with Al Dante - your perfect cooking app! Enjoy our collection of insanely delicious recipes, find new meal prep ideas, and transform everyday ingredients into exceptional dishes. Features: USE READY RECIPES: explore our step-by-step recipe text guides to discover thehttps://apps.apple.com/cn/app/cooking-recipes-meal-planning/id1673078434
2.吃饭英语大全!中西餐食材+菜品+调料+冷饮+小吃…(建议收藏)dried turnip [dra?d ?tn?p] 萝卜干 mater convolvulus [?mɑ?t?(r) k?n?v?lvj?l?s] 空心菜 steamed vermicelli rol…https://m.sohu.com/a/830570537_121124032/
3.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
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.formac破解版下载v3.1.7最新免费版附注册机/破解教程downie for mac破解版是一款可以在macOS操作系统上使用的食谱下载器工具!可以免费下载各大视频网站上的免费资源,支持视频批量极速下载操作。安全无毒,大家可以放心安装使用! 软件介绍 Downie是一款Mac平台上的优秀视频下载软件,使用非常简单,只需将下载链接放置Downie界面即可自动下载,目前支持上千个不同的网站,包括Youhttp://m.downcc.com/d/353167
6.Jelly教程下载Jelly教程下载《Android项目驱动式开发教程》第一章开发入门.pptx 上传者:m0_53604762时间:2021-10-11 RecipesForJelly:Jelly语言的深入教程和说明,以及如何使用该语言编写程序 果冻食谱 Jelly语言的深入教程和说明,以及如何使用该语言编写程序 推荐阅读顺序: 上传者:weixin_42108054时间:2021-04-05 https://www.iteye.com/resource/moliqin-1602955
7.AndroidKitchen厨房安装配置教程(windows篇)资源立即下载 开通VIP(低至0.43/天) 买1年送1年 试读 6页 Android Kitchen 厨房 安装配置教程(Android-Kitchen-0.224.tar.gz,linux,英文版 安卓厨房工具 浏览:16 5星 · 资源好评率100% 定制自己2. **选择操作**:Android-Kitchen提供了多种预定义的“食谱”(recipes),如添加、删除或替换系统应用https://download.csdn.net/download/naima571800/6349695
8.GitHubakiritsu/cslearning与其挑剔编程语言,不如选取更容易理解的公开课和教程。以下是非常适合入门的编程语言学习资源。 不要重语法,轻程序设计——许多编程入门课程都着重于讲清楚一★【课程】Stanford CS229: Machine Learning #哔哩哔哩-英文字幕 #课程主页 - 吴恩达在斯坦福大学讲授的研究生课程,更偏重数学理论。 【课程】Stanford CShttps://github.com/akiritsu/cs-learning-map
9.3rdEdition)pdf英文文字版附源代码电子书下载书籍类别:CSS教程 应用平台:PDF 更新时间:2011-06-18 购买链接:京东异步社区 网友评分: 360通过腾讯通过金山通过 22MB 详情介绍 了解如何使用CSS解决你面临的实际问题。这食谱提供了使用CSS格式化您的网页的实际例子数百,包括代码示例,您可以立即使用。你会发现正是你需要的,从确定哪些CSS方面满足您的站点的具体需求https://www.jb51.net/books/36692.html
10.学习Python免费电子书TOP10(含下载)51CTO博客简明python教程是Swaroop C H 写给 python 新手们的书籍,他说“假如你知道电脑如何保存test文件,那么这本书就是你需要的”。 这本书对于python新手们或者比较生疏的程序猿们是很好的学习python启蒙教材,这也是我个人非常推荐的书! 中文版下载 英文版下载 https://blog.51cto.com/u_15408625/7035101
11.步骤图空气炸锅食谱二,烤紫薯的做法蒸水蛋 评分8.0 16820 人做过 APP查看详细教程9年专业社区 · 150万菜谱 · 3亿厨友选择 空气炸锅食谱二,烤紫薯 为你准备了277种做法 3亿人都在用 轻松找到你要的口味 免费下载 继续看网页版 为你准备的相关做法 《Tinrry+》蔓越莓曲奇(超简单曲奇配方) 42384人做过 下载APP查看 蛋黄酥 42350人做过 下载https://m.xiachufang.com/recipe/104543877/
12.减肥教程相似应用下载60次下载 相似应用,小编亲测可用 减肥 67.4MB 查看 减肥 10.66MB 查看 减肥食谱 49.05MB 查看 减肥记录 53.7MB 查看 最新最全的减肥教程!本手册以清新唯美的风格为您诠释减肥食物库、减肥方法、减肥食谱、运动减肥、局部减肥以及分享成功励志的减肥故事。交流减肥瘦身经验,关注减肥瘦身方法,健康减肥,塑身做美丽https://m.wandoujia.com/apps/7360956/
13.烹客app最新版烹客app下载v2.7.4安卓版简介|教程|评论(0) 版本:v2.7.4 安卓版时间:2024-09-07 应用介绍 烹客app专为美食爱好者打造,提供专业美食知识技巧,精选厨房设备购买服务,还提供视频教学,用户可在线交流烹饪心得,美食,让生活更美好。 应用信息: 烹客是一款美食类软件,烹客app为美食爱好者提供细节化的美食知识,以及便捷的厨房设施购买服务,全面https://m.qqtn.com/q/265880
14.美食教程一些美食教程1.做菜大全教程这个网站提供了各种类型的这个网站提供了各种类型的菜谱和视频教程,包括家常菜、中式菜、西式菜、甜点等。每个视频都详细地介绍了每个步骤,有助于初学者快速入门。 2. 美食杰 这是一个多功能的美食健康网站,旨在为用户提供营养健康饮食知识和实践方法。网站提供了各种类型的食物配方和视频教程,并且定期更新新的食谱。 http://www.360doc.com/content/23/0316/14/75092861_1072254772.shtml