日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Web框架之Django_02基本操作(Django项目启动配置、数据库连接、orm、增删改查)

發布時間:2024/9/30 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web框架之Django_02基本操作(Django项目启动配置、数据库连接、orm、增删改查) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

閱讀目錄

摘要:

  • Django項目簡單現實過程
  • pycharm連接數據庫
  • Django之orm簡單操作增刪改查

一、新建Django項目、配置、設置:

  • 新建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’)] (添加靜態文件夾路徑)

  • 在寫注冊頁面功能時候需要在靜態文件夾內static添加bootstrap文件,以便于我們能夠輕松地對html做一些漂亮的布局。

    html文件添加導入jQuery的js文件、 Bootstrap的css和js文件:
  • -------------------------------------------------------------------- 注:如果你對python感興趣,我這有個學習Python基地,里面有很多學習資料,感興趣的+Q群:895817687<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頁面創建:

  • my_Dproject/my_Dproject/urls.py 在url路由文件中添加注冊功能路徑

  • 在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數據庫相關配置、數據庫遷移命令:


    Tips:獲取get請求數據的方式跟POST請求完全一樣。

  • 獲取到用戶注冊信息,接下來需要連接數據庫,拿到數據庫的用戶數據進行驗證,注冊的成功與否。 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 pymysqlpymysql.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數據庫的增刪改查操作簡介:
    利用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.QueryS

    這里引入一個小點:將查詢到的的所有表記錄傳給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框架實現的最基礎的流程圖:(后期不斷完善中…)

    總結

    以上是生活随笔為你收集整理的Web框架之Django_02基本操作(Django项目启动配置、数据库连接、orm、增删改查)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: www.一区二区三区 | 四川操bbb| 一区二区三区四区在线 | www.亚洲.com| 亚洲一区二区色图 | 国产大尺度视频 | 白浆av | 男女性高潮免费网站 | 日本护士╳╳╳hd少妇 | 成品短视频泡芙 | 三级福利视频 | www.青青草 | 超碰caoprom | 色www.| 亚洲精选中文字幕 | 免费在线观看一区 | 中文字幕乱码一区 | 青青草国产 | 国产第一页第二页 | 91成人免费电影 | 久久深夜| 色综合久久网 | 午夜成人在线视频 | 成人福利视频在线 | 亚洲午夜久久久久久久久 | 一区二区在线免费观看视频 | 日韩福利 | 亚洲伊人网站 | 亚洲欧美在线成人 | 日韩av无码中文字幕 | 色版视频| 91久久精品国产91久久性色tv | 天海翼av在线 | 久久免费在线观看视频 | 四季av一区二区夜夜嗨 | 日本阿v视频 | 亚洲午夜精品视频 | 亚洲图片一区二区 | 韩国av免费在线观看 | 在线观看日本 | 天堂网av在线 | 美丽的姑娘在线观看 | 韩国一级淫片免费看 | 色欲久久久天天天综合网精品 | av黄色免费网站 | 日本中文字幕有码 | 亚洲日本在线观看视频 | av免费久久 | 国产丝袜在线视频 | 欧美黄色一级生活片 | 一二三不卡视频 | 一级看片免费视频 | 毛片大片 | 99久久99久久久精品棕色圆 | 国产精品永久免费观看 | 性奶老妇 视频 | 99re这里只有精品在线观看 | 日本丰满大乳奶做爰 | 欧美色一区二区三区在线观看 | 国产毛片欧美毛片久久久 | 亚洲精品一区二三区不卡 | 久久婷五月 | 啪啪.com| jiz亚洲 | 二区视频在线 | 久久网中文字幕 | 国产伦一区二区三区 | 国产美女白浆 | 2021天天干 | 91午夜视频在线观看 | 一女双乳被两男吸视频 | 摸一摸操一操 | 成人免费网站视频 | 精品人伦一区二区三电影 | 欧美黑人添添高潮a片www | 亚洲美女中文字幕 | 成人午夜视频免费观看 | 日日骚av一区二区 | 国产成人精品综合 | 91精产品一区观看 | 长篇高h肉爽文丝袜 | 日韩精品视频一区二区 | 久久久久成人精品无码中文字幕 | 超碰com | 韩国av一区 | aaa国产视频 | 国产av无码专区亚洲av毛片搜 | 中国字幕一色哟哟 | 国产精品无码内射 | 美女网站免费观看视频 | 女人下面流白浆的视频 | 美女午夜激情 | 风间由美一区 | 亚洲午夜一区 | 大尺度舌吻呻吟声 | 色婷婷国产精品 | 亚洲国产精品久久久久久 | 欧美人与禽zozzo性之恋的特点 | 天海翼一区 |