这一节,终于能见到HttpResponse的效果,惊不惊喜意不意外。运行上一节的项目,在浏览器中,输入网址,多回车几次(访问等功能要用到数据),结果是这样的。
自从有了数据,心情爽爽的,感觉钱途一片光明。策马扬鞭,加快进度,访问数据,删除数据,修改数据一次实现,Don't worry.没多少内容,也就几万个字而已。
有一点,你应该知道,后端返回给浏览器内容,可以是数据,也可以是html内容。构造html内容,输出到浏览器时,就能被解析,前提是没语法错误。
html的超链接标签是<a></a>,用它可进行页面跳转。代码中的format()函数实现了占位符功能,而重定向用HttpResponseRedirect实现。
base/views.py完整代码如下
from django.http import HttpResponse, HttpResponseRedirectfrom base.models import Post# 访问数据def index(request): posts = Post.objects.all() post_list = [] for post in posts: del_str = "<a href='delete/{0}/'>删除
</a>".format(post.id) update_str = "<a href='update/{0}/'>修改</a><br/>".format(post.id) post_list.app('岗位:' + post.name + '\t') post_list.app(del_str) post_list.app(update_str) return HttpResponse(post_list)# 添加数据def create(request): post = Post.objects.create(name='研发经理') post.save() return HttpResponse("添加岗位返回的id是:"+str(post.id))# 删除数据def delete(request, post_id): Post.objects.filter(id=post_id).delete() return HttpResponseRedirect('/base/')# 修改数据def update(request, post_id): post = Post.objects.get(id=post_id) post.name = '项目经理' post.save() return HttpResponseRedirect('/base/')在urls.py配置时,可以用<>的方式,进行参数配置,注意一点:views.py里函数的参数名跟urls.py里的要保持一致,如都是:post_id,否则会访问不到。
base/urls.py完整代码
from django.urls import pathfrom . import viewsapp_name = 'base'urlpatterns = [ path('', views.index, name='index'), path('create/', views.create, name='create'), path('delete/<int:post_id>/', views.delete, name='delete'), path('update/<int:post_id>/', views.update, name='update'),]跑起来后,多玩几次,访问、修改、删除,数据没了,新增就了,数据有了,修改就好。唧唧复唧唧,多编程,少玩智能手机,手机会没电,程序会出错。
从列表跳转到删除或修改函数时,是传输id值过去的,如果传过去的id不存在的话,会怎么样?—会出错。不信的话,咱们下一节见。