某鱼兼职并不是那么好做,钱也不是漫天要价

news2025/1/22 16:48:04

文章目录

      • 一、背景
      • 二、雇主的期望
        • 2.1、jinja2代码
      • 三、题主的期望
        • 3.1、删除功能
        • 3.2、前端体现
        • 3.3、留言列表实现降序
        • 3.4、效果显示
      • 四、总结

一、背景

上周某鱼推送过来的单子多到题主应接不暇,不得已拒绝了几单,但是接下来的单子呢又不那么顺利,比如说要考试的那个,题主还特意问了是测试还是运维,雇主很肯定的说是测试,结果呢,是地地道道的自动化运维,逗题主呢,虽然题主测试、开发、运维都有涉猎,但是不代表是万能的,所谓是术业有专攻,测试是本职,开发和运维只是附带的技能;还有一个是说要给开发一个留言模块,这不就来叙事了,只不过人家丢过一个连接就消失了,不再需要题主给他实现了。

二、雇主的期望

雇主找过来的连接题主就不贴出来了,但是效果还是可以贴出来‘观赏’一下

在这里插入图片描述

这对于雇主来说已经满足需求了,但是题主的要求高一些,这里的样式是经过调整的,比如文本框里的内容、表单的样式<之前是会变形的>;同时题主发现了它的留言数据是写入text的,也就是读取text文本,这对于开发来讲是不可容忍的。

2.1、jinja2代码

<h1>提交留言功能区</h1>
    <form action="/msggate/" method="post">
        {% csrf_token %}
        <div>
        <span>发送方: </span><input type="text" name="userA" value="请输入发送者信息" onfocus="if(value=='请输入发送者信息')value=''" /> </div><br>
        <div><span>接收方: </span><input type="text" name="userB" value="请输入接收者信息" onfocus="if(value=='请输入接收者信息')value=''"/> </div><br>
        <div><span>消息文: </span><input type="text" name="msg" value="请输入即将发送的信息" onfocus="if(value=='请输入即将发送的信息')value=''"/> </div><br>
        <input type="submit" value="留言提交" />
    </form>

    <h1>获取留言功能区</h1>
    <form action="/msggate/" method="get">
        <span>接收方: </span><input type="text" name="userC" value="请输入接收方名字" onfocus="if(value=='请输入接收方名字')value=''"/>
        <input type="submit" value="留言获取">
    </form>

三、题主的期望

看到如此简单丑陋的、题主都不好意思收费了,所以这一单就丢了;既然有需求,就不能放过,那么题主就自己找模板,轻车熟路的就找了;感觉还不赖的样子

在这里插入图片描述

从样式上看,后者明显更胜一筹,为此题主在原有的功能基础上了,增加了最下面的留言列表,以及删除留言功能

3.1、删除功能

记得在view模块中添加删除方法;因为原项目的关系,最后需要返回到上层目录

def delete(request):
    email = request.GET.get("email")
    Message.objects.filter(email=email).delete()
    return redirect("../")

再去urls添加对应路由

path(r'message_form/delete/', delete),

3.2、前端体现

在遍历接口返回的表单中,添加删除入口

<table border="1">
        <thead>
        <th>留言邮箱</th>
        <th>留言来源</th>
        <th>留言信息</th>
        <th>操作</th>
        </thead>
        <br>
        <tbody>
        {% for msg in message %}
            <tr>
                <td>{{ msg.email }}</td>
                <td align="center">{{ msg.name }}</td>
                <td>{{ msg.message }}</td>
                <td><a href="delete/?email={{ msg.email }}">删除</a></td>
            </tr>
        {% endfor %}
        </tbody>
    </table>

3.3、留言列表实现降序

models模块,数据模型添加时间字段

update_time = models.DateTimeField(verbose_name="更新时间", auto_now=True)

同样是在view修改接口函数

# 默认接受一个参数request,是Django传递进来的,每一个请求都会包装成一个request对象
def message_form(request):
    # 从html中提取数据保存到数据库中
    # 如果是POST,进行取数据
    if request.method == "POST":
        # 进行值的提取
        # POS属性调用get方法,可理解为dict字典所有用get方法,""代表值不存在的话设置默认值
        name = request.POST.get("name", "")
        email = request.POST.get("email", "")
        address = request.POST.get("address", "")
        message_text = request.POST.get("message", "")
        update_time = request.POST.get("update_time", "")
        message = Message()
        # 和上面对应
        message.name = name
        message.email = email
        message.address = address
        message.message = message_text
        message.update_time = update_time
        message.save()
        mes_list = []
        all_message = Message.objects.all().values().order_by("-update_time")
        if len(all_message) > 1:
            for message in all_message:
                mes_list.append(message)
        else:
            mes_list.append(message)
        return render(request, "message_form.html", {
            "message": mes_list
        })

    # 从服务器中提取出数据展示到html页面
    if request.method == "GET":
        var_dict = {}
        # 这里取数据使用filter方法,如果没有数据会返回一个空的list: 根据update_time排序
        all_message = Message.objects.all().values().order_by("-update_time")
        if all_message:  # 判断是否有数据,若没有数据取第0个会报错
            mes_list = []
            for message in all_message:
                mes_list.append(message)
            return render(request, "message_form.html", {"message": mes_list})
            # 或者可以直接写为:locals(),可以将所有的局部变量全部变成key-value的形式,但此习惯不好
            # return render(request, "message_form.html", locals())
        else:  # 若没有数据直接返回页面,不然会抛异常
            return render(request, "message_form.html")

3.4、效果显示

如果只是更改view层、由于settings设置了DEBUG=True,那么程序会自动完成更新,但修改了数据模型,则需要重新迁移数据结构

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

在这里插入图片描述

四、总结

经过题主一番查找,然后再改造功能之后,是不是更能满足需求呢?兼职是做什么,已经没有那么多的时间和精力去开发一个完整的项目,所以只能接一些像bug修复、接口开发、项目部署、测试、自动化测试等等,好在面广,遇上高峰咨询的也是络绎不绝,共勉!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

提速3.7倍!何恺明团队再发新作,更快更高效的FLIP模型:通过Masking扩展语言-图像预训练(附论文原文下载)

原创/文 BFT机器人 研究论文地址&#xff1a;https://arxiv.org/abs/2212.00794 计算机视觉和深度学习领域大神何恺明携团队再发新作&#xff01;论文围绕近来火热的CLIP&#xff08;Contrastive Language-Image Pre-Training&#xff09;模型展开研究&#xff0c;并提出了一种…

Python怎么进行时区的转换

pytz 是一个用于处理时区的 Python 库,它为 Python 提供了对时区的支持。 它提供了大量的时区信息&#xff0c;包括时区名称、偏移量、是否使用夏令时等。你可以使用 pytz 库来处理本地时间、UTC 时间和其他时区之间的转换。 它提供了许多函数来帮助你处理时区相关的信息。 …

C++之多态(中篇)(最全总结)

这里接上面C之多态&#xff08;上篇&#xff09; 本篇目录4.多态的原理4.2 多态的原理4.3 C 11 override和final4.4 重载、重写&#xff08;覆盖&#xff09;、隐藏&#xff08;重定义&#xff09;的对比 &#xff08;函数之间的关系&#xff09;5.抽象类5.1概念5.2接口继承和实…

三、基于kubeadm安装kubernetes1.25集群第二篇

在上一篇中我们已经安装kubernetes要求做了服务器初始化&#xff0c;看这篇之前&#xff0c;建议先看下上篇&#xff1a;https://blog.csdn.net/u011837804/article/details/128350651 那我们正式开始kubernetes1.26集群安装 1、每台机器安装docker20.10.22 docker的安装细节…

数据结构训练营4

开启蓝桥杯备战计划&#xff0c;每日练习算法一题&#xff01;&#xff01;坚持下去&#xff0c;想必下一年的蓝桥杯将会有你&#xff01;&#xff01;笔者是在力扣上面进行的刷题&#xff01;&#xff01;由于是第一次刷题&#xff01;找到的题目也不咋样&#xff01;所以&…

itop-imx8m开发板gstreamer日志级别设置

gst 的日志等级分为 none(0)error(1) warning(2) info(3) debug(4) log(5)。默认 gst 的日志等级为 1&#xff0c;即 error 打印&#xff0c;出错时会打印。 1&#xff09;全局日志级别设置 如果需要更高级别打印&#xff0c;修改环境变量 GST_DEBUG 即可。如需要 warning 级别…

基于python的transform行人车辆识别

Transformer是一种神经网络体系结构&#xff0c;由于它能够有效地处理顺序数据中的长期依赖性&#xff0c;因此在自然语言处理(NLP)任务中受到欢迎。它还被应用于各种其他任务&#xff0c;包括图像分类、对象检测和语音识别。 在车辆和行人识别方面&#xff0c;transformer可用…

浅谈安科瑞电能预付费系统在大电力客户中的设计及应用分析

摘 要 随着我国供电企业的不断发展&#xff0c;而用电模式也在不断改革&#xff0c;预付费技术在气、电等部门得到普遍的使用&#xff0c;本文主要针对预付费系统在大电力客户中的使用情况进行分析&#xff0c;提高用电用户的缴费率&#xff0c;有效的避免了客户恶意偷窃电行…

【小5聊】Winform从指定服务器下载文件的方式

在一些实际项目中&#xff0c;我们往往需要上传一些excel、word等办公文件&#xff0c;甚至是mp3、mp4等音频视频文件。 当然&#xff0c;大多数小型网站会放到自己服务器&#xff0c;如果文件量不大的话 如果文件数量会很多&#xff0c;那么就需要考虑使用第三方来保管存储 不…

Elasticsearch:使用 NLP 问答模型与你喜欢的圣诞歌曲交谈

自然语言处理 (NLP) 是人工智能 (AI) 的一个分支&#xff0c;旨在通过将计算语言学与统计、机器学习和深度学习模型相结合&#xff0c;尽可能接近人类解释地理解人类语言。 NLP 的最大挑战之一是在考虑到各种语言表示的情况下预训练文本数据的过程。 2018 年&#xff0c;谷歌…

企业报表插件怎么用?

最近因为单位年底要做部门总结汇报&#xff0c;需要使用很多的数据以报表的形式来引证今年的工作情况&#xff0c;内部的 OA、ERP 这些业务系统是指望不上了。作为懂一点 SQL、又经常用 Excel 来给领导做报表的我&#xff0c;在网上一轮操作&#xff08;就是百度啦&#xff09;…

算法通关手册 刷题笔记1 数组基础

算法通关手册 刷题笔记1 数组基础 持续更新中 文章目录算法通关手册 刷题笔记1 数组基础数组操作题目0189 轮转数组AC自己的解法其他解法知识点查漏补缺关于python中的数组赋值python中对象的引用0066 加一AC自己的解法其他解法知识点查漏补缺0724 寻找数组的中心下标AC自己的解…

大数据必学Java基础(一百一十六):Application域监听器

文章目录 Application域监听器 一、认识Application域监听器 二、监听器代码 Application域监听器 一、认识Application域监听器

关于金字塔格式转tiff并且openslide能获取到缩略图等标签信息

我们都知道openslide通过openslide_get_associated_image_names获取相关的图像名称&#xff0c;比如"thumbnail",“label”,“macro"等。那我们将"thumbnail”,“label”,"macro"写入tiff的时候&#xff0c;如何才能保证openslide能够获取到呢&a…

2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 建模方案及代码实现(更新中)

【BetterBench原创】2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 建模方案及代码实现&#xff08;更新中&#xff09; 更新进展 2022年12月20日 22:00 发布初步思路 &#xff08;待更新&#xff09;发布初步思路实现代码 …

即时通讯音视频开发视频编解码预测技术

目的是去除空间冗余和时间冗余。因为视频存在大量的空间冗余和时间冗余&#xff0c;包括空间冗余、时间冗余&#xff0c;预测后得到去除大部分空间或时间冗余的残差。 图像空间相邻像素具有很强的相关性&#xff0c;帧内预测技术去除空间冗余。 视频图像在时间上有较强的相关性…

组团出海抢抓跨境电商外贸,有利于2023“开门稳”

组团出海抢抓跨境电商外贸&#xff0c;有利于2023“开门稳” 我国是货物贸易第一大国&#xff0c;强大的生产能力、出色的产业配套、完善的物流供应、充足高效的劳动力&#xff0c;都为我国成为贸易强国提供了有利条件。 近几年&#xff0c;中国跨境电商产业进入快速发展阶段&a…

区块链北大肖老师学习笔记4

第五节 比特币系统的实现 区块链是去中心化的账本&#xff0c;比特币使用的是基于交易的这种账本模式(transaction[交易]-based ledger[账本])。系统当中并不会显示每个账户有多少钱。 比特币系统的全节点要维护一个叫UTXO(unspent transaction output)(还没有被花出去的交易的…

成为2.2亿儿童主动要吃的天然营养,AMSTRONG维小壮做对了什么?

文|螳螂观察&#xff08;TanglangFin&#xff09; 随着疫情防控政策的调整&#xff0c;在人们开始注重提升身体免疫力以抗击病毒的措施中&#xff0c;在国外流行多年的接骨木莓&#xff0c;开始受到国内消费者的青睐。 接骨木莓的功效早已被美国FDA和加拿大FDA双重认证&#…

VUE3-Pinia的使用《三》

pinia的官网是简介 | Pinia。 它的功能和vuex差不多&#xff0c;但是pinia更加优于vuex。主要用于状态管理&#xff0c;管理全局的变量&#xff0c;也可以存储页面A的值&#xff0c;然后在页面B中直接访问&#xff0c;不分父子组件之间的关系&#xff0c;可以任意传值&#xf…