栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django框架之视图

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django框架之视图

创建详细过程 添加图书

通过get或者post请求方式将参数写入到数据库中,
在views.py文件下编写视图函数

def add(request):
    # 新增图书
    if request.method == 'GET':
        return render(request,'book/add.html')
    else:
        # 从表单中获取相应参数
        bookinfo=BookInfo()
   		bookinfo.bname=request.POST.get("bname")  
   		bookinfo.bpub_date=request.POST.get("bpub_date")     
   		bookinfo.bpage=request.POST.get("bpage")
	# 保存信息
        bookinfo.save()
        return redirect("/book/index")

在urls.py添加相应路径

 url(r"^add",add),

在相应的index.html文件下加入连接

添加

创建一个add.html文件在页面上填写添加的数据内容

书名:
出版日期:
页码:
删除图书

逻辑: 数据通过渲染模板渲染到页面上, 通过获取图书的id值, 返回到删除函数执行软删除 ( 即把对应的图书的删除标记进行更改,并不是真正的把数据从数据库了删除 )
在index.html页面上做相应的修改,




    
    Title


添加
    {%for book in books%}
  • {{book.bname}}---- 删除
  • {% endfor %}

视图函数, 通过返回的id值获取book对象,执行操作

# 删除图书
def delete(request,bid):
    try:
        # 1.通过bid来查找book
        book = BookInfo.objects.get(id=bid)
        # 2.删除
        book.is_delete=1
        book.save()
    except Exception as e:
        print("异常",e)
    return HttpResponseRedirect("/book/index")

对应的urls.py也要进行修改

url(r"^delete/(d+)",delete),
修改图书

逻辑: 通过get或post请求方式获取也面提交的表单信息 ,在通过相应的id值找到相应的book数据,通过update方法对数据进行修改
视图函数对应代码:

def edit(request):
    if request.method == 'GET':
        id=request.GET.get("id")
        book=BookInfo.objects.get(id=id)
        return render(request,"book/edit.html",{'book':book})
    else:
        # 获取表格请求传上去的值
        id = request.POST.get("id")
        bname = request.POST.get("bname")
        bpage = request.POST.get("bpage")
        bpub_date = datetime.strptime(request.POST.get('bpub_date'),'%Y年%m月%d日').strftime('%Y-%m-%d')
        # 更改数据库的信息
        BookInfo.objects.filter(id=id).update(bname=bname,bpage=bpage,bpub_date=bpub_date)
        return HttpResponseRedirect('/book/index')

相应的分路由

url(r"^edit",edit),

对应的edit.html内容如下:

书名:
出版日期:
页码:

在index.html页面上创建对应的修改的标签,通过(?id=)的方式传递id值,

修改

注意:在提交表单时,要注释掉settings.py中的 MIDDLEWARE 的 crsf 内容

补充内容 — 错误视图

Django框架有自带的默认视图应用于处理HTTP错误请求 如404视图,500视图
404错误:
在http响应过程中遇到404相应错误时,在Django中直接访问当前Django应用的服务器下一个错误的url地之后或默认显示一个404错误页面,
(1)对于默认404的视图,可以传递一个默认的变量request_path给模板,request_path表示导致错误的url地址信息
(2)若是在项目下settings中的DEBUG变量设置为True,那么将不会调用404视图,而是显示urlconf并带有已协调试信息,因此,需要把True变为False,还需要改变ALLOWED_HOSTS为任何url

DEBUG = True
ALLOWED_HOSTS = ['*']
defaults.page_not_found(request,template_name='404.html') 

注意:通常在调试代码时,我们都不需要修改 DEBUG、ALLOWED_HOSTS 的值,但若不想让实际用户查看到 开发时的调试信息,我们一般会在实际部署及发布项目时,将 DEBUG、ALLOWED_HOSTS 项修改为上述值
也可以在templates中创建一个自定义的404页面,但该文件的命名必须为404.html,且必须是在templates目录下直接创建,500错误视图同上

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/664950.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号