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... OKmigrate命令會檢查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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 下载的文件打不开甚至中毒?教你几招Has
- 下一篇: python 逻辑回归准确率是1_pyt