Django对MySQL数据库的增删查改

Django + MySQL的增删查改

本项目只有代码的呈现,并不包括环境的调试以及数据库的连接等等。

本栏主要介绍Django对MySQL数据库的增删查改操作

models.py:

class Message(models.Model):
    text1 = models.CharField(max_length=256, verbose_name='链接')
    text2 = models.CharField(max_length=256, verbose_name="文字")
    
    def to_dict(self):
        return {
            'text1': self.text1,
            'text2': self.text2,
        }

增加操作:

views.py:

def message_add(request):
    # 定义一个增加函数
    if request.method == 'POST':
        # 如果是POST请求方式,就获得text1和text2
        text1 = request.POST.get('text1')
        text2 = request.POST.get('text2')
        models.Message.objects.create(
            # create添加数据
            text1=text1,
            text2=text2
        )
    return redirect('/message/')
    # 调用函数message

def message(request):
    # 显示函数-显示数据信息
    messages = models.Message.objects.all()
    # 从数据库中获取数据保存在字典中
    return render(request, 'index/message.html', {'messages': messages})
    # index/message.html展示的页面,{'messages': messages}字典
index/message.html

    <form action="/message/" method="post">
        <table class="table">
            <tr>
                <td>资讯链接</td>
                <td>资讯标题</td>
            </tr>
            {% csrf_token %}
             <!--   csrf_token自己了解   -->
            {% for foo1 in messages %}
            <!--    遍历字典,显示数据库中的对应信息    -->
            <!--    数据的显示无关form action     -->
                <tr>
                    <td>{{ foo1.text1 }}</td>
                    <td>{{ foo1.text2 }}</td>
                    <td>
                        <button type="button" class="btn btn-default"><a href="/message_jump/?id={{ foo1.id }}"
                                                                         target="_Blank">修改</a></button>
<!--     /message_jump/?id={{ foo1.id }}中是为了得到该条数据的对应id号,-->
<!--     由于django在没有models中没有设置主键的话,会自动生成id主键并未自增类型,-->
<!--     所以在这里得到的是该条数据的id,从而在调用message_jump时获得id即:request.GET.get("id")并由此得到对应那条数据,下同-->
                    </td>
                    <td>
                        <button type="button" class="btn btn-default"><a href="/message_delete/?id={{ foo1.id }}"
                                                                         target="_Blank">删除</a></button>
                    </td>
                </tr>
            {% endfor %}
        </table>
    </form>
    <form action="/message_add/" method="post">
        <table class="table">
            <tr>
                <td>资讯链接</td>
                <td>资讯标题</td>
            </tr>
            {% csrf_token %}
            <tr>
                <td><label>
                    <input type="text" name="text1">
                </label></td>
                <td>
                    <label for="">
                        <input type="text" name="text2">
                    </label>
                </td>
                <td><label for=""><input type="submit" value="提交"></label></td>
                <!-- 当你填充内容之后,点击提交,会执行form中的action也就是message_add函数,请求方法是post,就会将table的内容提交上去,进而在数据库中添加         -->
            </tr>
        </table>
    </form>



<!--使用的是bootstrap做的前端,使用的是模态框,所以看起来内容比较多一点,找多对应的action,name之类的就好容易一点-->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                        &times;
                    </button>
                    <h4 class="modal-title" id="myModalLabel">
                        查询
                    </h4>
                </div>

                <form class="navbar-form navbar-right modal-body" role="search" action="/search/" method="post">
                    <div class="form-group col-sm-12">
                        <label for="">链接&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
                            <input type="text" class="form-control" placeholder="Search" name="text1"></label>
                    </div>
                    <div class="form-group col-sm-12">
                        <label for="">文字&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<input
                                type="text" class="form-control" placeholder="Search" name="text2"></label>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-default" data-dismiss="modal">关闭
                        </button>
                        <button type="submit" class="btn btn-primary">
                            提交更改
                        </button>
                    </div>
                    <hr>
                </form>
            </div>
        </div>
</div>

删除:

views.py

def message_delete(request):
    # 定义一个删除函数
    message_id = request.GET.get('id')
    # 从前端获取id
    line = models.Message.objects.get(id=message_id)
    # 删除id=message_id那条数据
    line.delete()
    return redirect('/message/')
    # 调用显示函数,对应的前端代码在    index/message.html

修改:

views.py

def message_jump(request):
    # 当你点击前端的修改按钮是,调用该函数
    messages_id = request.GET.get("id")
    # 获得id
    request.session['messages_id'] = messages_id
    # 将该id缓存起来
    return redirect('/message_page/')
    # 调用函数


def message_page(request):
    return render(request, 'index/message_update.html')
    # 跳转修改页面

def message_update(request):
# 修改函数
    message_id = request.session['messages_id']
    if request.method == 'POST':
        text1 = request.POST.get('text1')
        text2 = request.POST.get('text2')
        models.Message.objects.filter(id=message_id).update(
        #当id = 缓存的id时候,进行update修改
            text1=text1,
            text2=text2
        )
        return redirect('/message/')

对应的修改的界面:

'index/message_update.html'

    <form action="/message_update/" method="post">
        <table>
            <tr>
                <td>资讯链接</td>
                <td>资讯标题</td>
            </tr>
            <tr>
                <td><label>
                    <input type="text" name="text1">
                </label></td>
                <td>
                    <label for="">
                        <input type="text" name="text2">
                    </label>
                </td>
                <td>
                    <button type="submit" class="btn btn-default">提交</button>
                </td>
            </tr>
        </table>
    </form>

查找:

注意在models.py中定义的函数to_dict
models.py

class Message(models.Model):
    text1 = models.CharField(max_length=256, verbose_name='链接')
    text2 = models.CharField(max_length=256, verbose_name="文字")
    
    def to_dict(self):
        return {
            'text1': self.text1,
            'text2': self.text2,
        }
views.py

def search(request):
    if request.method == 'POST':
        text1 = request.POST.get('text1')
        text2 = request.POST.get("text2")
        search_dict = dict()
        if text1:
            search_dict['text1'] = text1
        if text2:
            search_dict['text2'] = text2

        text_order_info = PhoneInf.objects.filter(**search_dict)
        messages = [text_order.to_dict() for text_order in text_order_info]

        messages = {
            'messages ': messages 
        }
        return render(request, 'index/message.html', messages )
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值