全栈“食”代:用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.快速记忆英语单词的方法和技巧英语单词记忆方法记忆法3遗忘速度快:即使暂时记住了单词,但由于缺乏有效的复习和应用,单词很快被遗忘。为了解决这些难题,我们推荐使用“英乐通”小程序,这是一个专为英语单词记忆设计的智能学习工具。它通过科学的记忆方法和趣味的学习方式,帮助孩子在短时间内快速提升单词记忆能力。1科学记忆法:采用艾宾浩斯遗忘曲线原理,通过智能算法安排复习https://m.163.com/dy/article/JIG5C9UB0556AN3J.html
2.一种崭新的长尾分布下分类问题的通用算法NeurIPS2020三.Recipe (快速食用指南) 在介绍本文复杂的因果图构建和后续推导实现,让同学们失去耐心之前,对于想赶紧快速食用我们方法的同学,我给个4步速成指南吧: 1)训练时需要De-confound Training,说人话就是classifier需要使用multi-head normalized classifier,即每个类的logits计算如下:,其中是超参,K是multi-head的数量。分https://blog.csdn.net/zandaoguang/article/details/108878239
3.自制小蛋糕的做法自制简单快速的小蛋糕自制小蛋糕怎么做拿出来时,要小心哦,很烫的 小窍门 1、我这里用的蛋糕粉,超市都有的卖,我只用了一小包,又和面粉加在一起的,本来是一包蛋糕粉加一个蛋,我加了两个蛋,又加了普通的面粉,这样做出来量会多出一半。 2、加了面粉后记住白糖要加一点,否则不够甜的 来自 美食天下槡树https://home.meishichina.com/recipe-129149.html
4.智慧让你的家常菜肴更加迷人SugarVinegarPorkRibsRecipe如果条件允许的话,那么直接放置24小时甚至更长时间都会是不错选择,但请记住,如果超过48小时,那么可能会导致肌肉变硬因此需要适当调整腌制时间以避免发生这样的问题哦! 烧开水: 在进行焯水之前,你应该把所有腌制好的五花肉全部放在大锅里,用冷水淫没,然后用火点燃木炭等燃料加热直到水开锅翻腾时倒入其中再快速煮沸5https://www.hgddesks.cn/zi-xun/562661.html
5.第四章:自己动手指南(学习的革命)书评(The1000RecipeChineseCookbook)的每一页,你只读你需要了解的内容。单单这一提示就会帮助你在浏览一份报纸所需的等量时间里读4本书。 另一提示:不要“慢条斯理、不慌不忙”地读。马上往窗外看一下,然后想一下你大脑能马上吸收所有这些信息的神奇能力。记住你每只眼睛中都有1.3亿个光接收器,记住这些光接收器https://book.douban.com/review/1408857/
6.UNIX环境编程GCC编译器Makefile基础入门GDB调试把它看成是 recipe 的简单表示,而不是实际文件的名称。这里的 recipe: rm $(target) $(objects) 1. 删除目标文件和当前目录下的所有对象文件。 为什么使用 PHONY?为了避免意外情况!比如:如果你的一个文件叫 clean 怎么办? 【一个经常出现的错误】 https://blog.51cto.com/u_15153240/6150687
7.张某很快速的按照recipe手册建立完成,并准确得到了测量结果。以上刷刷题APP(shuashuati.com)是专业的大学生刷题搜题拍题答疑工具,刷刷题提供张某很快速的按照recipe手册建立完成,并准确得到了测量结果。以上描述了体现了作业观察中的哪几项()。A.执行B.熟练C.分歧D.结果E.异常的答案解析,刷刷题为用户提供专业的考试题库练习。一分钟https://www.shuashuati.com/ti/f39c473f3de0442abb9b3b3635dfea8f.html?fm=bdbds451929a85fae6acf3ec52ca4595c742f
8.recipe芦荟胶喷雾怎么用recipe芦荟胶喷雾使用方法recipe芦荟胶喷雾怎么用 这款芦荟胶喷雾近喷和远喷的质地是不一样的,近喷喷出来是泡沫的质地,远喷喷出来是水雾的质地,水珠比较分散,主要看自己是要怎么使用,近喷远喷都是可以的。这款芦荟胶喷雾可以随身携带,随时随地拿出来喷一喷,化妆前喷一喷可以快速补水保湿,缓解肌肤敏感脆弱的状态。皮肤https://zhidao.baidu.com/question/2084129317033976548.html
9.AIRecipeGeneratorGPT商店AI工具集导航1000+AI工具导航AI Recipe Generator食谱生成器提供了一个快速和简单的方法来创建自定义食谱。你所需要做的就是创建一个账户,输入你家里的食材,网站就会把一份独特的食谱发送到你的电子邮箱。 AI Recipe Generator食谱生成器提供了一个快速和简单的方法来创建自定义食谱。你所需要做的就是创建一个账户,输入你家里的食材,网站就会把https://www.tuidog.com/sites/20651.html
10.reception什么意思怎么读?单词用法记忆法发音音标反义词单词:reception发音、音标、怎么读? reception 音标:[ri'sep?n] 你的浏览器不支持播放 单词:reception的单词意思解释释义 n. 接待, 接受, 招待会【医】 接受, 感受【经】 接待, 接收, 接受 单词:reception的快速记忆法 ◆记忆方法一:谐音:若赛跑胜 若赛跑胜利,将受到热情的接待。◆记忆方法二:联想https://english.downyuan.com/index.php?m=home&c=View&a=index&aid=y1507
11.快速编译第三步出现问题·Issue#88·c停止。 make[1]: 离开目录“/home/akira/code/test/buildroot/buildroot/buildroot-ded3f9954f158b5d9cd08ae76749eade72fcca3a” Makefile:52: recipe for target 'all' failed make: *** [all] Error 2 从错误信息看,似乎是要make menuconfig,明天试试看。 make CONF=thead_610_compat_next_glibc_br_https://github.com/c-sky/forum/issues/88
12.HealthyFoodRecipes&EasySmartCookRecipeDiet- 最好的着名和受欢迎的食谱。 - 每个食品食谱写一个简单的方式,让读者可以享受,并尝试做饭。 - 高品质的春天动画图像和照片使用,所以读者可以下降凉爽和放松。 - 最适合所有年龄组的人,孩子或老年或大学和大学生 - 您可以将食谱添加到您的“收藏夹列表”快速找到他们。 https://apps.apple.com/cn/app/healthy-food-recipes-easy-smart-cook-recipe-diet/id1178330848