当前位置: 首页 > news >正文

Django 入门学习总结3

1、创建数据库

打开mysite/settings.py文件,可以看到我们使用Python中已包含的默认的数据库SQLite,也可以使用其他的数据库,如Oracle、Mysql等。里面也包含时区、语言等设置信息。

在使用数据库和表之前,输入下面的命令:

python manage.py migrate

输出信息为:

生成和数据库有关的管理、授权、内容类型和session等内容。

2、建立数据库表模型

模型与数据库中表结构相关,如字段的长度、类型等信息。

在投票系统中,建立了两个数据库表相关的模型:Question和Choice,问题包含问题和产生的日期,选项包含选项和投票的计数。Question和Choice是一一对应的关系。

编辑polls/models.py文件,内容如下:

from django.db import models

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 Web框架的模型对象。

3、激活模型

编辑mysite/settings.py文件,在INSTALLED_APPS 中,添加一条语句:"polls.apps.PollsConfig",如下所示:

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

现在Django框架知道包含有投票系统模块。完成以上步骤后,运行命令:

python manage.py makemigrations polls

则创建相应的模型。

运行命令:

python manage.py sqlmigrate polls 0001

则生成表结构和索引等信息,如下图所示。

运行python manage.py migrate,则在数据库中创建相应的模型和表。

4、与Django的交互

通过python manage.py shell命令进入与Django的交互。

通过输入以下命令,

from polls.models import Choice, Question

from django.utils import timezone

q = Question(question_text="What's new?", pub_date=timezone.now())

q.save()

则在数据库表中插入了一条记录,如下图所示:

运行以下命令,则在关键字为1的表中插入三条记录:

    >>> q = Question.objects.get(pk=1)
    >>> q.choice_set.create(choice_text="Not much", votes=0)
    <Choice: Not much>
    >>> q.choice_set.create(choice_text="The sky", votes=0)
    <Choice: The sky>
    >>> c = q.choice_set.create(choice_text="Just hacking again", votes=0)

修改polls/models.py文件,以便在数据库表的查询中能返回更明确的信息。

class Question(models.Model):
        # ...
        def __str__(self):
            return self.question_text


    class Choice(models.Model):
        # ...
        def __str__(self):
            return self.choice_text

并增加另一个自定义的方法:

import datetime

from django.db import models
from django.utils import timezone


    class Question(models.Model):
        # ...
        def was_published_recently(self):
            return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

注意上面又导入了和时区有关模块和工具类。

5、建立管理员账号

通过以下命令来创建一个管理站点。

python manage.py createsuperuser

在下图中,需要输入管理员用户名、密码、邮箱等信息。

现在打开网页,输入地址,就可以打开管理员页面了。

http://127.0.0.1:8000/admin/

输入用户名和密码,进入管理员页面。

这时我们发现有用户名和组的信息,修改 polls/admin.py 将投票系统加入,以便管理投票系统。

from django.contrib import admin
from .models import Question

admin.site.register(Question)

刷新管理页面,则新出现投票相关的内容。

点击最下的问题链接,我们就可以对投票系统,进行问题的添加、修改和删除等操作。

相关文章:

  • 使用 PowerShell 创建共享目录
  • 2023亚太杯数学建模思路 - 案例:粒子群算法
  • 【Redis篇】简述Java中操作Redis的方法
  • 【广州华锐互动】昆虫3D虚拟动态展示:探索神奇的微观世界
  • jjwt使用说明-笔记
  • win10 怎么进入cmd窗口
  • VBA技术资料MF85:将工作簿批量另存为PDF文件
  • django ModelSerializer自定义显示字段
  • msvcp140.dll是什么?msvcp140.dll丢失的有哪些解决方法
  • 90.子集II
  • Linux中的进程程序替换
  • 点云从入门到精通技术详解100篇-基于点云数据的机器人装焊 过程在线测量(下)
  • 如何解决msvcp110.dll丢失问题,分享5个有效的解决方法
  • 自动驾驶轨迹预测学习笔记
  • uniapp 富文本以及移动端富文本的展示问题
  • __proto__ 和 prototype的关系
  • Docker下部署自己的LNMP工作环境
  • express如何解决request entity too large问题
  • HTTP那些事
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java教程_软件开发基础
  • react 代码优化(一) ——事件处理
  • Redis 懒删除(lazy free)简史
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • zookeeper系列(七)实战分布式命名服务
  • 翻译--Thinking in React
  • 搞机器学习要哪些技能
  • 力扣(LeetCode)21
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 使用 QuickBI 搭建酷炫可视化分析
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 走向全栈之MongoDB的使用
  • 阿里云重庆大学大数据训练营落地分享
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (2.2w字)前端单元测试之Jest详解篇
  • (31)对象的克隆
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (vue)页面文件上传获取:action地址
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (分布式缓存)Redis哨兵
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (转)3D模板阴影原理
  • .NET Core引入性能分析引导优化
  • .NET 发展历程
  • .NET/C# 使用反射注册事件
  • .NET简谈设计模式之(单件模式)
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [CISCN2021 Quals]upload(PNG-IDAT块嵌入马)
  • [Flutter] extends、implements、mixin和 abstract、extension的使用介绍说明
  • [hdu 2826] The troubles of lmy [简单计算几何 - 相似]
  • [HDU]2161Primes
  • [IE9] IE9 beta版下载链接
  • [LeetCode] Wildcard Matching