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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

django 默认查询条件_Python之Django系列-创建第一个应用-4

發布時間:2023/12/10 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django 默认查询条件_Python之Django系列-创建第一个应用-4 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇:Python之Django系列-創建第一個應用-3

上一篇文章我們介紹了創建項目,打開瀏覽器訪問http://127.0.0.1:8000/polls/,能看見"投票主頁視圖"等描述。

本篇文章我們接著上一篇文章繼續學習,在Python之Django系列-初始Django-1介紹到Django是一個MTV框架,M代表Model即模型層,模型層通常是與數據庫做交互,而Django中與數據庫相關的配置在mysite/settings.py文件中,在修改配置文件前,我們先設置該配置文件中的時區為"Asia/Shanghai",配置如下:

TIME_ZONE = 'Asia/Shanghai'

在Django中,默認使用的數據庫為SQLite,具體的配置如下:

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', }}

當然我們也可以更改為其他數據庫,如Oracle,Mysql,Pg等等,下面的配置為Mysql配置,其他配置也可參考類似:

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': '127.0.0.1', 'PORT': '3306', }}

其中ENGINE屬性是數據庫引擎驅動,根據自己所需選擇不同數據庫引擎,主要有以下幾種:

  • django.db.backends.sqlite3
  • django.db.backends.postgresql
  • django.db.backends.mysql
  • django.db.backends.oracle

以上為數據庫配置,配置文件中還有一個重要的配置為INSTALLED_APPS,默認包含了以下Django自帶應用:

  • django.contrib.admin -- 管理員站點, 你很快就會使用它。
  • django.contrib.auth -- 認證授權系統。
  • django.contrib.contenttypes -- 內容類型框架。
  • django.contrib.sessions -- 會話框架。
  • django.contrib.messages -- 消息框架。
  • django.contrib.staticfiles -- 管理靜態文件的框架。

這些默認應用提供了一個項目常用的框架,當然要使用這些應用,我們需要依賴對應這些默認應該所需的表,通過以下命令可以同步默認應用下所有相關的表到數據庫中:

E:DeveloperpythonDjangomysite>python manage.py migrateOperations to perform: Apply all migrations: admin, auth, contenttypes, sessionsRunning migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying sessions.0001_initial... OK

migrate命令會檢查INSTALLED_APPS配置,為每一個應用創建對應的表,執行完之后,可以在對應的數據庫中查詢到對應的表

創建投票應用模型

投票應用我們分為Question和Choice兩個模型,Question 模型包括問題描述和發布時間。Choice 模型有兩個字段,選項描述和當前得票數。每個選項屬于一個問題。

找到polls/models.py 文件并編輯:

from django.db import models# Create your models here.class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published')class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)

每個模型都需要繼承django.db.models.Model,模型中的變量代表為數據庫中的字段,在該代碼中,可以看到CharField,DateTimeField,IntegerField等都代表為數據庫表中的字段類型,有使用過數據庫的基本都能理解,max_length代表字符長度,default為數據庫默認值,其他字段如下:

Django字段類型描述

Django字段類型描述

通過上述模型Django可以為該模型生成對應的數據庫表,但前提是,我們需要安裝該應用到我們項目mysite

怎么安裝?

在mysite/settings.py中找到INSTALLED_APPS變量,把"polls.apps.PollsConfig"加到最后一行,最終如下:

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'polls.apps.PollsConfig',]

接下來執行如下命令

python manage.py makemigrations polls

將會看到如下輸出:

Migrations for 'polls': polls/migrations/0001_initial.py - Create model Question - Create model Choice

通過運行 makemigrations 命令,Django 會檢測你對模型文件的修改,然后通過migrate命令可以對修改的內容同步到數據庫,但是在執行命令之前,我們可以看看會migrate將會執行什么樣的SQL命令,通過如下命令查看:

E:DeveloperpythonDjangomysite>python manage.py sqlmigrate polls 0001---- Create model Question--CREATE TABLE `polls_question` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `question_text` varchar(200) NOT NULL, `pub_date` datetime(6) NOT NULL);---- Create model Choice--CREATE TABLE `polls_choice` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `choice_text` varchar(200) NOT NULL, `votes` integer NOT NULL, `question_id` integer NOT NULL);ALTER TABLE `polls_choice` ADD CONSTRAINT `polls_choice_question_id_c5b4b260_fk_polls_question_id` FOREIGN KEY (`question_id`) REFERENCES `polls_question` (`id`);

查看將要執行的SQL語句沒問題,現在我們可以執行migrate命令進行同步

python manage.py migrate

執行完成之后,將會把本次的Model更改內容同步到對應的數據庫表結構上,這個功能非常強大,后面基本會用到,基本流程為:

  • 編輯 models.py 文件,改變模型。
  • 運行 python manage.py makemigrations 為模型的改變生成遷移文件。
  • 運行 python manage.py migrate 來應用數據庫遷移。

在以上命令成功執行后,對應的也會自動生成和數據庫做交互的API

API嘗試

通過以下命令,進入Python交互式命令行:

E:DeveloperpythonDjangomysite>python manage.py shellPython 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.(InteractiveConsole)>>> from polls.models import Question,Choice>>> Question.objects.all()>>> from django.utils import timezone>>> q = Question(question_text="問題是什么", pub_date=timezone.now())>>> q.save()>>> q.id1>>> q.question_text'問題是什么'>>> q.pub_datedatetime.datetime(2020, 12, 6, 9, 42, 43, 472917, tzinfo=)>>> q.question_text='問題是這樣?'>>> q.save()>>> Question.objects.all()]>

如需退出命令行,執行方法exit()

Django管理界面介紹

首先,我們得創建一個能登錄管理頁面的用戶。請運行下面的命令:

python manage.py createsuperuser

然后按照提示輸入用戶名,郵箱,密碼即可,最后顯示"Superuser created successfully."既表示創建用戶成功,接著重新啟動服務器,運行如下命令:

python manage.py runserver

啟動成功之后,打開瀏覽器,輸入地址:http://127.0.0.1:8000/admin/提示輸入用戶名和密碼,為剛才通過命令創建的用戶名和密碼

登錄成功后即跳轉到如下頁面:

在該界面中沒有看到我們的投票相關應用,我們需要手工修改如下代碼,找到polls/admin.py并編輯:

from django.contrib import adminfrom .models import Question# Register your models here.admin.site.register(Question)

保存后,不用重啟服務器,刷新頁面即可看到如下

Choice模型同樣操作也可顯示在界面上,到這里,基本上我們可以在管理后臺進行數據修改,刪除,新增等操作

下一篇:Python之Django系列-創建第一個應用-5

總結

以上是生活随笔為你收集整理的django 默认查询条件_Python之Django系列-创建第一个应用-4的全部內容,希望文章能夠幫你解決所遇到的問題。

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