Django进阶

本文深入探讨了网页开发中母版与组件的概念,以及它们在重复利用代码上的作用。同时,对比分析了CBV(Class Based View)和FBV(Function Based View)在Django框架中的应用与实现方式,包括具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 母版
    母版就是将基本的网页写好,封装成一个母版,后续结构大致相同的网页就可以节省代码继承使用(了解即可,不好用)
  2. 组件
    组件是将导航栏和页脚等封装成一个组件,后续网页可以方便使用(了解即可,不好用)
  3. 静态文件目录写法
    (了解即可,根本不会去修改)
  4. CBV(class base view)和FBV(function base view)
# FBV版添加班级,直接调用函数,返回页面
def add_class(request):
    if request.method == "POST":
        class_name = request.POST.get("class_name")
        models.Classes.objects.create(name=class_name)
        return redirect("/class_list/")
    return render(request, "add_class.html")

# CBV版添加班级,创建类来返回页面
from django.views import View
class AddClass(View):
    def get(self, request):
        return render(request, "add_class.html")

    def post(self, request):
        class_name = request.POST.get("class_name")
        models.Classes.objects.create(name=class_name)
        return redirect("/class_list/")
       
# urls.py中添加对应关系,as_view()是注册
url(r'^add_class/$', views.AddClass.as_view()),
  1. request对象和上传文件实例
request.path_info	返回用户访问的url,不包含域名和后面的参数
request.method	获取请求的方法(GET、POST等)
request.GET	get方法获取到的数据,一般是一个字典
request.POST	post方法获取到的数据
request.FILES	获取传过来的文件,使用request.FILES.get("key").name	

上传文件实例
# 在html页面中,<form> 请求的方法为POST,带有enctype="multipart/form-data" 的情况下才会包含数据
def upload(request):
    """
    保存上传文件前,数据需要存放在某个位置。默认当上传文件小于2.5M时,django会将上传文件的全部内容读进内存。
从内存读取一次,写磁盘一次。但当上传文件很大时,django会把上传文件写到临时文件中,然后存放到系统临时文件夹中。
    :param request: 
    :return: 
    """
    if request.method == "POST":
        # 从请求的FILES中获取上传文件的文件名,file为页面上type=files类型input的name属性值
        filename = request.FILES["file"].name
        # 在项目目录下新建一个文件
        with open(filename, "wb") as f:
            # 从上传的文件对象中一点一点读
            for chunk in request.FILES["file"].chunks():
                # 写入本地文件
                f.write(chunk)
        return HttpResponse("上传OK")
  1. Jsonresponse
当需要后端把数据回吐给前端网页时,用Jsonresponse生成jason编码的响应
from django.http import Jsonresponse
在view文件中的函数体里
return Jsonresponse(data)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值