iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Web框架之Django_02基本操作(
  • 751
分享到

Web框架之Django_02基本操作(

框架操作Web 2023-01-31 00:01:41 751人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

摘要: Django项目简单现实过程 PyCharm连接数据库 DjanGo之ORM简单操作增删改查 一、新建Django项目、配置、设置: 新建Django项目:(为了熟悉Django操作,暂时全部用cmd形式来实现

摘要:

一、新建Django项目、配置、设置:

  1. 新建Django项目:(为了熟悉Django操作,暂时全部用cmd形式来实现,很多地方需要手动添加)
    项目目录D:\Django:
    >>管理员权限打开cmd,通过cmd命令进入项目目录
    >>django-admin startproject my_Dproject      (创建项目)
    >>cd my_Dproject      (进入项目文件夹)
    >>python3 manage.py startapp app01       (创建app)
    >>pycharm打开Django\my_Dproject\my_Dproject\下的settings.py文件,在里面的'INSTALLED_APPS'列表后面添加"app01.apps.App01Config"
    "或者直接添加简写"app01"    (注册项目app:app01)
    >>在settings.py文件内:"TEMPLATES"列表里面第二行'DIRS': [os.path.join(BASE_DIR,'templates')]       (添加templates文件夹路径)
    >>在settings.py文件内最下面:STATIC_URL = '/static/'下面添加:STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]   (添加静态文件夹路径)
  2.  在写注册页面功能时候需要在静态文件夹内static添加bootstrap文件,以便于我们能够轻松地对html做一些漂亮的布局。

    html文件添加导入jQuery的js文件、 Bootstrap的css和js文件:

    <script src="https://cdn.bootCSS.com/Jquery/3.4.1/jquery.min.js"></script>
        <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
        <script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>

二、注册路径HTML页面创建:

  1. my_Dproject/my_Dproject/urls.py    在url路由文件中添加注册功能路径

  2. 在templates文件夹内新增register.html页面文件用于用户请求注册路径返回的注册页面,进行注册操作
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>注册界面</title>
        <script src="Https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
        <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
        <script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
    </head>
    <body>
    <div class="container">
        <div class="row">
            <h2 class="text-center">注册页面</h2>
            <div class="col-sm-6 col-sm-offset-3 col-md-6 col-md-offset-3 col-xs-6 col-xs-offset-3">
                <form action="/reGISter/" method="post">
                    <p>用户名:<input type="text" class="form-control" placeholder="请输入用户名" name="username" id="i1"></p>
                    <p>密码:<input type="text" class="form-control" placeholder="请输入密码" name="passWord" id="i2"></p>
                    <input type="submit" class="btn btn-block btn-info" value="注册提交">
                </form>
            </div>
        </div>
    </div>
    </body>
    </html>

    开启my_Dproject项目,在浏览器输入url:http://127.0.0.1:8000/register/

三、处理用户注册请求、Django连接Mysql数据库相关配置、数据库迁移命令:

  1. my_Dproject/app01/views.py    在views函数文件中添加register函数,来处理用户注册的请求。

    Tips:获取get请求数据的方式跟POST请求完全一样。
  2. 获取到用户注册信息,接下来需要连接数据库,拿到数据库的用户数据进行验证,注册的成功与否。
    Django连接mysql数据库的方法:
    my_Dproject/my_Dproject/settings.py    继续回到settings配置文件中,来配置Django连接Mysql
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'my_Dproject',
            'HOST': '127.0.0.1',
            'PORT': 3306,
            'USER': 'root',
            'PASSWORD': '123',
        }
    }

    还没完,接着需要去项目的init文件中添加相关信息,告诉Django用MySQL数据库连接数据库就行。
    my_Dproject/my_Dproject/__Init__.py中添加下面信息:
    
    import pymysql
    pymysql.install_as_MySQLdb()
    
    (这里需要注意:__init__.py文件还在app01文件中有,也可以在app01中的init文件中添加,效果一样。)
  3. 配置添加Django中orm的models文件
    重点Django的orm不能自动帮我们创建数据库,但是可以自动帮我们创建表同时一个Django项目就使用一个数据库
    my_Dproject/app01/models.py  中添加映射表的相关类
    这里我们需要用到用户数据表,所以创建一张User类来映射MySQL数据库中的user用户表
    class User(models.Model):
        id = models.AutoField(primary_key=True)
        name = models.CharField(max_length=32)
        password = models.CharField(max_length=16)


    映射表的类创建完毕后,需要进行关键的2步【数据库迁移命令】操作,才能创建出user表:

    第一步:将数据库变动记录记录到一个文件中:
    在pycharm自带的Terminal命令行中输入:
    python3 manage.py makemigrations
    
    第二步:将数据库变动同步到数据库中:
    Python3 manage.py migrate


    重点
    以后只要涉及到数据库的一丝变动(这里主要说的是表结构),要想让变动生效一定要执行这2步数据库迁移(同步)命令!!!

    --------------------------------------------------------------------------------------------------------------------------------------------------
    这里提一个小点:我们在测试时候如果遇到下面这种情况:

    解决办法是:在settings.py文件中注释掉一行代码:

    --------------------------------------------------------------------------------------------------------------------------------------------------

四、Django之orm对MysqL数据库的增删改查操作简介:

  1. 利用Django中orm来查找数据库中的数据,对数据库进行增、删、改、查
    前面我们已经拿到用户提交的注册信息:username和password
    语法:
    增:                 
    新增数据
    # 操作数据库user表新增记录
    # 方式1:
    user_obj = models.User.objects.create(name=username,password=password)
    # 方式2:
    user_obj = models.User(name=username,password=password)
    user_obj.save()  # 对象调用save方法保存到数据库




    查:                  

    user_list = models.User.objects.all()  # 获取user表所有的数据(QuerySet对象)
    # 只要是QuerySet就可以点query查看获取到当前QuerySet对象的内部sql语句
    
    user_obj = models.User.objects.all().first()   #从上面所有数据的QuerySet对象中取出第一个用户对象
    
    user_list = models.User.objects.filter(password=555)
    # filter过滤,查找条件password=555的所有用户数据,返回结果user_list为QuerySet对象(装有查询到的全部用户数据对象的一个容器)
    user_obj = models.User.objects.filter(password=555).first()
    # 取出刚才容器中的第一个用户数据对象。



    Tips:除了用filter定位表记录的方法,还可以使用.get()方法:

    user_obj = models.User.objects.get(password='555')
    这样查会报错:get() returned more than one User -- it returned 2!
    原因:用get方法是直接获取单数据对象本身,报错的原因在于根据password='555'查询的数据是2个结果,那么就不是单个数据对象,所以就报错了!
    
    强调:用get方法查询条件不存在的时候会直接报错。
    
    所以:不推荐使用get,推荐使用filter查询,就算条件不存在,会返回一个空的QuerySet对象(<QuerySet []> <class 'django.db.models.query.QuerySet'>)

    --------------------------------------------------------------------------------------------------------------------------------------------------
    这里引入一个小点:将查询到的的所有表记录传给html文件,进行页面渲染之后展现给用户
    templates文件夹内创建user_list.html文件:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
        <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
        <script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
    </head>
    <body>
        <div class="container">
            <div class="row">
                <h1 class="text-center">用户数据表</h1>
                <div class="col-md-8 col-md-offset-2">
                    <table class="table-hover table-bordered table-striped table">
                        <thead>
                            <tr>
                                <th>ID</th>
                                <th>name</th>
                                <th>password</th>
                            </tr>
                        </thead>
                        <tbody>
                            {% for user_obj in user_list %}
                                <tr>
                                    <td>{{ user_obj.pk }}</td>
                                    <td>{{ user_obj.name }}</td>
                                    <td>{{ user_obj.password }}</td>
                                </tr>
                            {% endfor %}
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </body>
    </html>


    创建一个展示用户数据的url路径:
    my_Dproject/my_Dproject/urls.py中添加:

    url(r'^user_list/', views.user_list)

    创建路径函数:
    my_Dproject/app01/views.py中加函数:

    def user_list(request):
        user_list = models.User.objects.all()
        return render(request, 'user_list.html', {"user_list": user_list})
    
    后面的字典还可以替换成locals(),代表函数内所有变量我当做参数传进前面的html文件中,进行动态页面渲染:
        return render(request, 'user_list.html', locals())


    开启my_Dproject项目,在浏览器输入url:http://127.0.0.1:8000/user_list/

    这就是刚才我们通过增的操作,创建的user表和表中的2条记录。

    --------------------------------------------------------------------------------------------------------------------------------------------------
    改:               
    首先需要明白一点:改是建立在已经查到的数据基础上修改对应字段值的,所以改的前提必须有一个查的过程:
    定单个表记录,用filter:

    user_obj = models.User.objects.filter(id=edit_id).first()
    
    # 再次强调如果不加.first(),返回的结果是一个QuerySet对象,而不是用户数据对象
    
    改:
    方式一:
    models.User.objects.filter(id=edit_id).upadte(name='banana', password='666')
    注意:方式一update修改的数据可能不是一条记录,有可能把查询到的多条记录的name和password的值全部改成banana和666,类似于批量操作。
    当然如果能确定filter对象的唯一性比如条件为primary_key的id那么查找的数据肯定是一条记录,这样也可看作单个记录修改。
    
    方式二:
    user_obj = models.User.objects.filter(id=edit_id).first()
    user_obj.name = 'banana'
    user_obj.name = '666'
    user_obj.save()

    编辑对象获取方式:
    我们在表记录修改的时候一般都是需要获取到该条表记录的主键id值,这样就能精确定位修改该条记录了。所以需要一些手段来传递id值:

    编辑对象的id的获取方式
    方式1:利用input隐藏一个标签
    <input type="hidden" name="edit_id" value="{{ user_obj.pk }}">
    
    方式2:
    form表单中加入GET请求数据,在views函数方法中通过request.GET.get(edit_id)来获取需要修改的id
    (虽然请求方式是POST,但可以在标签内加入GET请求参数,在views函数中能够同时通过request.POST和request.GET方法拿到不同的数据)
    <form action="/edit/?edit_id={{ user_obj.pk }}" method="post">

    删:             
    删除和修改方法类似:

    方法一:
    models.User.objects.filter(password='555').delete()  # 会将queryset所有的数据对象全部删除
    方法二:
    user_obj = models.User.objects.filter(password='555').first()
    user_obj.delete()

    最后补充一张WEB框架实现的最基础的流程图:(后期不断完善中...)







    

--结束END--

本文标题: Web框架之Django_02基本操作(

本文链接: https://www.lsjlt.com/news/182800.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Web框架之Django_02基本操作(
    摘要: Django项目简单现实过程 pycharm连接数据库 Django之orm简单操作增删改查 一、新建Django项目、配置、设置: 新建Django项目:(为了熟悉Django操作,暂时全部用cmd形式来实现...
    99+
    2023-01-31
    框架 操作 Web
  • web开发框架之Django基础
      在脚本中如何进行Django的运行 if __name__ == '__main__': import os import django # 注意路径(当前所在的位置,要加载Django的配置文件) ...
    99+
    2023-01-30
    框架 基础 web
  • web基础之Structs框架怎么使用
    Structs是一个用于构建Web应用程序的开源Java框架。它提供了一些核心功能,如表单验证、国际化、数据绑定等,使开发人员能够更...
    99+
    2023-09-29
    Structs
  • 数据库之Hive概论和架构和基本操作
    目录Hive概论Hive架构 Hive安全和启动Hive数据库操作Hive内部表操作-数据添加Hive内部表特点Hive外部表操作Hive表操作-分区表Hive概论 Hive是一个构建在Hadoop上的数据仓库...
    99+
    2023-04-07
    数据库 Hive概论 Hive架构 Hive基本操作
  • 基于python3.5+的web框架s
    简介 sanic是一款用python3.5+写的web framework,用法和flask类似,sanic的特点是非常快github官网:https://github.com/channelcat... 速度比较 框架 实现基础 每...
    99+
    2023-01-31
    框架 web
  • OpenCV半小时掌握基本操作之图像基础操作
    目录概述截取图像获取颜色通道读取视频【OpenCV】⚠️高手勿入! 半小时学会基本操作⚠️ 图像基础操作 概述 OpenCV 是一...
    99+
    2024-04-02
  • WEB框架之---Django初级篇
    一、下载与安装(Windows版)    下载地址:https://www.djangoproject.com/download/     或者通过命令:pip install django==1.11.2进行安装(Python3使用pip...
    99+
    2023-01-31
    框架 WEB Django
  • Python操作SQLLite(基本操作
      SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。 Python SQLITE数据库是一款非常...
    99+
    2023-01-31
    操作 Python SQLLite
  • 数据库之Hive概论和架构和基本操作是什么
    今天小编给大家分享一下数据库之Hive概论和架构和基本操作是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我...
    99+
    2023-04-14
    数据库 hive
  • Web框架之Django_04 模板层了
    摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器、标签 inclusion_tag 模板的继承 模板的导入 一、模板语法: 常用语法:{{     }}    变量相关{% %}    ...
    99+
    2023-01-31
    框架 模板 Web
  • Web框架之Django_01初识(三大
    摘要: Web框架概述 Django简介 Django项目创建 Django基础必备三件套(HttpResponse、render、redirect)  一、Web框架概述: Python三大主流Web框架: Dj...
    99+
    2023-01-31
    三大 框架 Web
  • SQLServer2008 基本操作
    SQLServer2008 基本操作 ...
    99+
    2024-04-02
  • MySQL 基本操作
    目录 数据库的列类型 数据库基本操作 SQL语言规范 SQL语句分类 查看表,使用表 管理数据库  创建数据库和表 删除数据库和表 向数据表中添加数据 查询数据表中数据 修改数据表的数据 删除数据表中数据 修改表明和表结构 扩展表结构(增加...
    99+
    2023-09-03
    mysql 数据库
  • asp.net使用WebAPI和EF框架结合实现数据的基本操作
    目录一、资料准备二、数据列表三、组合条件搜索四、组合条件搜索加分页五、数据的新增本章节主要介绍使用WebAPI和EF框架结合,实现数据的基本操作功能。 一、资料准备 数据库脚本: c...
    99+
    2024-04-02
  • Web框架之Django_03 路由层了
    摘要: 路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页、虚拟环境 视图层 JsonResponse FBV 与 CBV(function base views与class ...
    99+
    2023-01-31
    路由 框架 Web
  • Java基础之二叉搜索树的基本操作
    目录一、二叉搜索树插入元素二、搜索指定节点三、删除节点方式一四、删除节点方式二五、运行结果一、二叉搜索树插入元素 class Node { int v...
    99+
    2024-04-02
  • 代码级质量技术之基本框架介绍
    一、背景代码级质量技术:顾名思义为了服务质量更好,涉及到代码层面的相关技术,特别要指出的是,代码级质量技术不单纯指代码召回技术,如静态代码扫描、单元测试等。研究代码级质量技术主要有以下几个方面的原因:1、随着精准测试等概念的兴起,对代码覆盖...
    99+
    2023-06-06
    代码级质量 框架
  • SpringBoot零基础入门之基本操作与概念
    目录1.什么是Spring Boot2.Spring Boot优点3.Spring Boot 项目创建3.1 使用Idea 创建3.2 Spring Boot 项目3.3 启动并验证...
    99+
    2024-04-02
  • Git基础学习之分支基本操作详解
    目录1、创建分支(1)创建分支(2)图示理解2、查看分支列表3、分支切换4、查看所有分支的最后一个提交5、删除分支1、创建分支 (1)创建分支 Git 是怎么创建新分支的呢? 很简单...
    99+
    2022-11-13
    Git分支基本操作 Git分支操作 Git基础学习
  • Kafka基本框架是什么
    这篇文章主要介绍“Kafka基本框架是什么”,在日常操作中,相信很多人在Kafka基本框架是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Kafka基本框架是什么”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作