文章

通过Django创建一个简单的投票器


创建项目

$ django-admin startproject mysite

mysite/ 项目根文件夹,可以重命名
manage.py: 一个可以用来和Django交互的命令行工具
里面的第二个mysite/ 文件夹,真正的项目名字
mysite/settings.py: 配置文件
mysite/urls.py: 项目的URL配置文件.
mysite/wsgi.py: web的网管配置文件
测试

python3.7 manage.py runserver

默认是在127.0.0.1:8000



创建Poll(投票)应用

创建之后会新建polls文件夹

在views.py创建第一个视图

创建urls.py文件

访问polls

第二部分,创建数据
在settings配置数据库引擎,默认是sqlite,也支持mysql,postgres等数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

在settings注册新建的polls APP

INSTALLED_APPS = [
    'polls.apps.PollsConfig',  # register polls

初始化数据库

python manage.py migrate - 写入数据库。初次运行时候是Django框架自带的一些数据会写入数据库。

可以通过pycharm查看

根据官方教程在polls APP下创建poll model.py

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)

执行python manage.py makemigrations polls 之后在polls下面会生成一个0001——initial.py文件,里面是自动生成的在数据库建表的代码。

再次执行python manage.py migrate

Django会根据我们model里面的数据在sqlite数据库建表

数据库建表部分已经完成!

写入数据
官方教程采用API写入方法(python manage.py shell)有兴趣同学可以去看看。通过交互式方式写入数据太麻烦,可以直接采用python的sqlite包写入,参考文档

import sqlite3
import time

current = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
conn = sqlite3.connect('../Django_polls/db.sqlite3')
c = conn.cursor()
c.execute("INSERT INTO polls_question "
          "(question_text, pub_date) "
          "VALUES ('what is your name','{0}')".format(str(current)))

conn.commit()

执行之后,查询数据库确认

通过Admin页面管理数据
创建超级用户

$ python3.7 manage.py createsuperuser

使用刚刚创建的super user在admin页面登陆

http://127.0.0.1:8000/admin/

通过这个页面可以管理用户

通过修改polls/admin.py 文件可以在admin页面管理我们的polls数据

from django.contrib import admin
from .models import Question
admin.site.register(Question)

再次访问这个页面可以看到polls一栏

通过这个web页面可以对数据库进行增删查改。

比如增加一个问题:

大功告成

原文来自:通过Django创建一个简单的投票器,尊重自己,尊重每一个人;转发请注明来源!
0 0

发表评论