利用Django實現投票系統
聲明:我是跟着Github項目學習的,這裏的記錄僅僅是幫助自己理解。
這篇文章的主要目的是利用Django連接MySQL數據庫,並利用Django中自帶的Web前端處理器對數據庫進行簡單增刪改查操作,首先在進行實驗之前請確保如下環境配置正確:Python3.5以上、MySQL安裝正確。
創建Python虛擬環境
首先我們在Python中先創建一個虛擬環境以便進行的操作不會影響到原始配置環境,創建虛擬環境的過程如下:
- 打開命令行程序(在電腦中輸入CMD即可)進入到你想保存的項目目錄中
- 創建vote文件夾
mkdir vote
- 在命令行中輸入命令
python -m venv venv
,第一個venv是告訴Python我要創建一個虛擬環境啦,第二個是虛擬環境的名稱(想取啥取啥嘍) - cd進入虛擬環境中的Scripts目錄:
cd venv/Scripts
- 輸入命令
activate
激活虛擬環境,此時命令行前面應該有虛擬環境標誌(venv) E:\pythoncode\
- 更新pip
python -m pip install -U pip
,我輸入pip install -U pip 會報錯Fatal error in launcher: Unable to create process using '"'
查了後說是電腦裏安裝了多個Python環境的原因。。。emmm但是我電腦裏貌似就一個python環境,如果你知道爲啥的話給我留言呀~ - 安裝Django
pip install django
- 創建django項目
django-admin startproject vote
最後是創建項目的名稱,這裏用的是vote - 在項目vote下創建vote_app應用,一個Django項目內可以創建多個應用:
python manage.py startapp vote_app
至此,Python的虛擬環境安裝完畢~~我們在命令行內鍵入python manage.py runserver
可以出現以下界面:
配置MySQL
- 打開setting.py文件(在剛剛創建的django項目vote下的vote目錄內),修改如下代碼,將剛剛創建好的vote_app加入django的應用下。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'vote_app',
]
- 修改setting.py中的數據庫配置,注意這裏的驅動要改爲django中集成好的mysql驅動,而且你要首先確保你的mysql中有名爲vote的數據庫,沒有的話可以先用create命令創建。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'vote',
'HOST': '172.31.43.***',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '*****',
}
}
- 安裝pymysql:
pip install pymysql
- 打開項目目錄下的__init__.py,寫入如下代碼:
import pymysql
pymysql.install_as_MySQLdb()
- 在命令行內鍵入
python manage.py migrate
- 之後打開model.py開始定義數據模型
from django.db import models
# Create your models here.
class Subject(models.Model):
no = models.IntegerField(primary_key=True,db_column='sno',verbose_name='學科編號')
name = models.CharField(max_length=20,db_column='sname',verbose_name='學科名稱')
intro = models.CharField(max_length=100,null=True,db_column='sintro',verbose_name='學科介紹')
create_date = models.DateField(db_column='create_date',verbose_name='成立日期')
is_hot = models.BooleanField(db_column='is_hot',verbose_name='是否熱門')
emp_rate = models.DecimalField(max_digits=7,decimal_places=2,db_column='emp_rate',verbose_name='就業率')
def __str__(self):
return self.name
class Meta:
db_table = 'tb_subject'
verbose_name = '學科'
verbose_name_plural = '學科'
class Teacher(models.Model):
no = models.IntegerField(primary_key=True,db_column='tno',verbose_name='老師編號')
name = models.CharField(max_length=20,db_column='tname',verbose_name='姓名')
intro = models.CharField(max_length=100,null=True,db_column='tintro',verbose_name='自我介紹')
job_date = models.DateField(db_column='job_date',verbose_name='入職日期')
good_count = models.IntegerField(db_column='good_count',verbose_name='好評數')
bad_count = models.IntegerField(db_column='bad_count', verbose_name='差評數')
sub_no = models.ForeignKey(Subject,db_column='sub_no',on_delete=models.PROTECT,verbose_name='所屬學科')
def __str__(self):
return self.name
class Meta:
db_table = 'tb_teacher'
verbose_name = '老師'
verbose_name_plural = '老師'
7.在命令行輸入python manage.py makemigrations vote_app
生成遷移文件
8.命令行輸入python manage.py migrate
執行遷移文件
如果這部分的操作都沒有報錯的話則恭喜你~連接MySQL的過程就圓滿完成啦!
利用Django來管理模型
1.創建超級用戶python manage.py createsuperuser
按提示依次輸入即可
2.在vote_app應用內修改admin.py文件如下,註冊模型。
from django.contrib import admin
from vote_app.models import Subject,Teacher
# Register your models here.
class SubjectAdmin(admin.ModelAdmin):
list_display = ('no','name','intro','create_date','is_hot','emp_rate')
ordering = ('no',)
class TeacherAdmin(admin.ModelAdmin):
list_display = ('no','name','intro','job_date','good_count','bad_count','sub_no')
ordering = ('sub_no','no',)
admin.site.register(Subject,SubjectAdmin)
admin.site.register(Teacher,TeacherAdmin)
3.在瀏覽器內輸入(http://127.0.0.1:8000/admin/)後輸入剛剛註冊的用戶名和密碼進入如下界面:
至此,我們可以在該頁面上對模型進行增刪改查操作。