首页 > 其他分享 >Django学习收尾

Django学习收尾

时间:2024-07-10 18:00:48浏览次数:7  
标签:return name form title request Django 学习 data 收尾

 启动项目命令

python manage.py runserver

文件上传功能实现

title = "Form上传"
    if request.method == "GET":
        form = UpForm()
        return render(request, 'upload_form.html', {"form": form, "title": title})

    form = UpForm(data=request.POST, files=request.FILES)
    if form.is_valid():
        print(form.cleaned_data)

        # 1.读取图片内容,写入到文件夹中并获取文件的路径
        image_object = form.cleaned_data.get("img")

        # file_path = "app01/static/img{}".format(image_object.name)
        media_path = os.path.join("media", image_object.name)

        f = open(media_path, mode='wb')
        for chunk in image_object.chunks():
            f.write(chunk)
        f.close()

        # 2.将图片文件路径写入到数据库
        models.Boss.objects.create(
            name=form.cleaned_data['name'],
            age=form.cleaned_data['age'],
            img=media_path,
        )

        return HttpResponse("...")
    return render(request, 'upload_form.html', {"form": form, "title": title})

混合数据(ModalForm)

models.py

class City(models.Model):
    """ 城市 """
    name = models.CharField(verbose_name="名称", max_length=32)
    count = models.IntegerField(verbose_name="人口")

    # 本质上数据库也是CharField,自动保存数据。
    img = models.FileField(verbose_name="Logo", max_length=128)

upload.py

class UpModelForm(BootStrapForm):
    bootstrap_exclude_fields = ['img']

    class Meta:
        model = models.City
        fields = "__all__"


def upload_modal_form(request):
    """ 上传文件和数据 """
    title = "ModelForm上传文件"
    if request.method == "GET":
        form = UpModelForm()
        return render(request, 'upload_form.html', {"form": form, "title": title})

    form = UpModelForm(data=request.POST, files=request.FILES)
    if form.is_valid():
        # 对于文件:自动保存;
        # 字段 + 上传路径写入到数据库
        form.save()
        
        return HttpResponse("成功")
    return render(request, 'upload_form.html', {"form": form, "title": title})

实现方式

1.自己手动去写

file_object = request.FILES.get("exc")
...

2.Form组件(表单验证) 具体文件操作还是手动自己做

request.POST
file_object = request.FILES.get("exc")

3.ModelForm(表单验证 + 自动保存数据库 + 自动保存文件)

-Media文件夹
-Models.py定义类文件要
    img = models.FileField(verbose_name="Logo", max_length=128, upload_to='city/')

echarts学习

怎么调用后台数据,使用ajax请求

chart_list.html

{% extends 'layout.html' %}

{% block content %}
<div class="container">
    <div class="panel panel-default">
        <div class="panel-heading">折线图</div>
        <div class="panel-body">
            <div id="m1" style="width: 600px;height:400px;"></div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-7">
            <div class="panel panel-default">
                <div class="panel-heading">柱状图</div>
                <div class="panel-body">
                    <div id="m2" style="width: 100%;height:400px;"></div>
                </div>
            </div>
        </div>
        <div class="col-sm-5">
            <div class="panel panel-default">
                <div class="panel-heading">饼图</div>
                <div class="panel-body">
                    <div id="m3" style="width: 600px;height:400px;"></div>
                </div>
            </div>
        </div>
    </div>
</div>
{% endblock %}
{% block js %}
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/echarts.min.js"></script>
<script type="text/javascript">
    $(function() {
        initBar();
    });

    function initBar() {
        // 初始化echarts实例
        var myChart = echarts.init(document.getElementById('m2'));

        // 初始的图表配置项
        var option = {
            title: {
                text: 'ECharts 入门示例'
            },
            tooltip: {},
            legend: {
                data: []
            },
            xAxis: {
                data: []
            },
            yAxis: {},
            series: []
        };

        // 发起ajax请求获取数据
        $.ajax({
            url: "/chart/bar/",
            type: "GET",
            dataType: "json",
            success: function(res) {
                // 如果请求成功,更新图表数据
                if (res.status) {
                    option.legend.data = res.data.legend; // 更新图例数据
                    option.xAxis.data = res.data.x_axis; // 更新X轴数据
                    option.series = res.data.series_list; // 更新系列数据

                    // 使用更新后的配置项显示图表
                    myChart.setOption(option);
                }
            },
            error: function(xhr, status, error) {
                console.error('AJAX请求出错:', status, error);
                // 在实际项目中可能需要处理错误情况
            }
        });
    }
</script>
{% endblock %}

chart.py

from django.shortcuts import render
from django.http import JsonResponse


def chart_list(request):
    """ 数据统计页面 """
    return render(request, 'chart_list.html')


def chart_bar(request):
    """ 构造柱状图的数据 """
    legend = ["张三", "李四"]
    series_list = [
        {
            "name": '张三',
            "type": 'bar',
            "data": [5, 20, 36, 10, 10, 20]
        },
        {
            "name": '李四',
            "type": 'bar',
            "data": [5, 20, 36, 10, 10, 20]
        },
    ]
    x_axis = ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']

    result = {
        "status": True,
        "data": {
            'legend': legend,
            'series_list': series_list,
            'x_axis': x_axis,
        }
    }
    return JsonResponse(result)

标签:return,name,form,title,request,Django,学习,data,收尾
From: https://blog.csdn.net/qq_43580271/article/details/140305087

相关文章

  • Django学习第五天
     启动项目命令pythonmanage.pyrunserver图像验证码生成随机字母或者数字importrandomfromPILimportImage,ImageDraw,ImageFont,ImageFilterdefcheck_code(width=120,height=40,char_length=5,font_file='ZixunHappyBold.ttf',font_size=28):code=......
  • 学习AI大模型,入门小白必看!应用开发极简入门PDF来了!
    人工智能大潮已来,不加入就可能被淘汰。就好像现在职场里谁不会用PPT和excel一样,基本上你见不到。而大模型是人工智能代表,潜力与使用方式有关。使用好大模型可提高效率,让人获得更好的待遇和更多机会。你发现PPT和excel用的好的PPT一看就惊艳,excel用的特别熟练,你这个数据分......
  • Halcon学习笔记——Day1
    题外话:最近因为项目需要halcon,所以开始学习一下halcon,顺便记录一下学习的笔记,如果感兴趣就给个关注,后续我会持续更新关于halcon的学习笔记;一、视觉包含的学科:1、数学2、软件3、图像4、光学5、控制6、电气二、视觉需求1、识别定位2、测量(2D、3D)3、缺陷(外观检测)......
  • 2024 暑假学习笔记
    向量我们定义向量是多维空间中一条带方向的线段,由于不太需要考虑其绝对位置关系,只考虑相对位置,一般都是平移到原点然后记录终点的坐标,记为\(\vecx=(a_1,a_2,...,a_n)\)。一般来说我们只探讨二维向量,因为是比较容易想的。比如说:我们可以称这个向量为\(u\),也可以表示为......
  • 【AI和大模型】AI到底和大模型有什么区别?机器学习,深度学习,python,NPL
    什么是AI?AI是一个广泛的领域,涵盖了模拟和扩展人类智能的多种理论和技术;而大模型是AI领域中的一种具体技术,特别是在自然语言处理(NLP)方面取得了显著进展的深度学习模型。大模型通常指的是具有大量参数的深度学习模型,它们通过在大规模数据集上进行训练,能够学到丰富的数据表示和模......
  • 【C语言学习】2.常量的分类及使用
    C语言中的常量有以下几种:·字面常量·const修饰的常变量·#define定义的标识符常量·枚举常量1.字面常量如数字(整型、浮点型),字符串等2.const修饰的常变量对于a这一变量,可以多次赋值而使用const修饰后变量被锁定,变更为常变量仍为变量的证明:创建数组后运行,报错显示其......
  • 【C语言学习】3.字符串+转义字符+注释
    字符串由双引号引起来的一串字符称为字符串字面值(StringLiteral),或者简称字符串。注:字符串以\0为结束标志,不算作字符串内容,若未输入,编译器将隐藏添加\0。\0为字符串的结束标志的证明:法一:chararr1[]="abc";//双引号为字符串chararr2[]={'a','b','c'};//单引号......
  • 从零学习大模型——使用GLM-4-9B-Chat + BGE-M3 + langchain + chroma建立的本地RAG应
    BGE-M3是第一个具有多功能、多语言和多粒度特性的文本检索模型。多功能:可以同时执行三种检索功能:单向量检索、多向量检索和稀疏检索。多语言:支持100多种工作语言。多粒度:它能够处理不同粒度的输入,从短句子到长达8192个词汇的长文档。为了构建RAG应用,我们需要用到向量数......
  • git 学习
    git学习git学习推荐课程和笔记02-深入Git(yuque.com)尚硅谷Git教程全套完整版(12h深入掌握git)_哔哩哔哩_bilibiligit工作区git工作区流程图参考博客;【Git】(1)---工作区、暂存区、版本库、远程仓库-雨点的名字-博客园(cnblogs.com)【Git】---工作区、暂存区、版......
  • 从零学习大模型——使用GLM-4-9B-Chat + BGE-M3 + langchain + chroma建立的本地RAG应
    第一篇介绍了如何配置最基本的环境并下载了GLM-4-9B-Chat到本地,接下来我们试着将GLM-4-9B-Chat接入LangChain。LangChain 是一个基于大型语言模型(LLM)开发应用程序的框架。LangChain简化了LLM应用程序生命周期的每个阶段:开发:使用LangChain的开源构建模块和组件构建应用程序......