1.   设计数据结构

问题表Question:作用存放问题

id 主键 自增

question_text 题目 varchar120

created 创建时间 datetime

选项表Choice:作用 存放选项

id  主键  自增

question  外键 问题表

choice_text varchar120

vote  int default=0

2.   编写model代码

打开polls/models.py, 编写如下代码

# 问题模型

class Question(models.Model):

    question_text = models.CharField("题目", max_length=120)

    created = models.DateTimeField("创建时间", auto_created=True, null=True)

# 选项模型

class Choice(models.Model):

    question=models.ForeignKey(Question,verbose_name=”题目", on_delete=models.CASCADE)

    choice_text = models.CharField("选项", max_length=120)

vote = models.PositiveIntegerField("投票数", default=0)

3.   根据模型,生成数据库中的表

激活/注册你的应用polls

打开mysite/settings.py,找到InstalledApps

INSTALLED_APPS = [

    'django.contrib.admin',

    ………

    # 自己编写的应用

    'polls.apps.PollsConfig',

    # 第三方应用

]

迁移

将我们的模型的生成或者变动,形成一个脚本,通过运行这个脚本,生成数据库中的表

需要控制台【Terminal】执行两条命令

python manage.py makemigrations #创建迁移脚本

python manage.py migrate #执行迁移 生成数据库中的表

4. 使用model API

创建一个Question

在控制台执行

q=Question.objects.create(question_text=”世界上最好的编程语言是?”)

获取一条Question数据

q1 = Quesiotn.objects.get(pk=1)

获取全部Question数据

q2=Question.objects.all()

打印获取的数据

q1. question_text

1.为model添加实例方法

def __str__(self):

return self.question_text

管理后台的使用

1. 创建管理员账号

在控制台输入如下命令:

python manage.py createsuperuser

2.   向管理后台注册应用

打开polls/admin.py文件

加入如下代码

from polls.models import Question

admin.site.register(Question)

3.   运行服务,访问管理员站点

python manage.py runserver

访问 127.0.0.1:8000/admin

使用注册的超级用户的账号密码登录即可

3.1针对多对一关系的管理页面

from django.contrib import admin 

from polls.models import Question, Choice 

# 针对多对一中 多的一方,可以让它继承 TabularInline类,作为 “一”的一方 管理界面的嵌入 

class ChoiceInlineAdmin(admin.TabularInline): 

    model = Choice

# 配置Question的管理界面 

class QuestionAdmin(admin.ModelAdmin):

#配置QUestion的外键的内嵌界面 

inlines = [ChoiceInlineAdmin, ]

#把模型和配置类注册到一起 

admin.site.register(Question, QuestionAdmin)

模版Template的使用

1.创建模板文件

1.1 集中在项目中

创建mysite/templates/polls 文件夹

1.2分散在应用中

创建polls/templates/polls

1.3生成文件

在polls/templates/polls文件夹创建一个文件 index.html

创建的templates文件夹(模板文件夹)需要settings.py 文件中配置

如:

# 用来配置项目的模板
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "templates"),], # 模板文件夹的路径
'APP_DIRS': True, # 可以再创建一个模板文件夹
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]

2.   编写模板文件

{% for obj in question_list%} 

        <li>{{obj.question_text}}</li> 

{% endfor%}

3.   重新编写views中的index方法

打开polls/views文件,把index方法改为:

def index(request):
#获取Question表中所有数据
question_list = Question.objects.all()
#上下文
template = loader.get_template("polls/index.html")
#渲染html
return (template.render({'question_list': question_list}, request))

该方法 将字典({'question_list': question_list} 传到"polls/index.html" 模板中,进行渲染,把渲染后的结果发给浏览器

4.   提交响应的简便方法

def index(request): 

    # question_list中存放数据库中查询的数据 

    question_list = Question.objects.all()   

    # 上下文  填充 模板中的数据 

    context = {'question_list': question_list}

    # 将模板和上下文 进行组装, 渲染之后返回给浏览器 

    return render(request, "polls/index.html", context)

Model 的使用的更多相关文章

  1. Spring Boot笔记一

    Spring Boot 入门 Spring Boot 简介 > 简化Spring应用开发的一个框架:> 整个Spring技术栈的一个大整合:> J2EE开发的一站式解决方案: 微服务 ...

  2. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  3. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

  4. 详解树莓派Model B+控制蜂鸣器演奏乐曲

    步进电机以及无源蜂鸣器这些都需要脉冲信号才能够驱动,这里将用GPIO的PWM接口驱动无源蜂鸣器弹奏乐曲,本文基于树莓派Mode B+,其他版本树莓派实现时需参照相关资料进行修改! 1 预备知识 1.1 ...

  5. 【AutoMapper官方文档】DTO与Domin Model相互转换(上)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  6. 拨开迷雾,找回自我:DDD 应对具体业务场景,Domain Model 到底如何设计?

    写在前面 除了博文内容之外,和 netfocus 兄的讨论,也可以让你学到很多(至少我是这样),不要错过哦. 阅读目录: 迷雾森林 找回自我 开源地址 后记 毫无疑问,领域驱动设计的核心是领域模型,领 ...

  7. 使用mybatis-generator在自动生成Model类和Mapper文件

    使用mybatis-generator插件可以很轻松的实现mybatis的逆向工程,即,能通过表结构自动生成对应的java类及mapper文件,可以大大提高工作效率,并且它提供了很多自定义的设置可以应 ...

  8. “RazorEngine.Templating.TemplateParsingException”类型的异常在 RazorEngine.NET4.0.dll 中发生,但未在用户代码中进行处理 其他信息: Expected model identifier.

    这个问题是由于在cshtml中 引用了model这个单词  它可能和Model在解析时有冲突. 解决方法:把model换成别的单词就可以了.

  9. QT内省机制、自定义Model、数据库

    本文将介绍自定义Model过程中数据库数据源的获取方法,我使用过以下三种方式获取数据库数据源: 创建 存储对应数据库所有字段的 结构体,将结构体置于容器中返回,然后根据索引值(QModelIndex) ...

  10. iOS自定义model排序

    在开发过程中,可能需要按照model的某种属性排序. 1.自定义model @interface Person : NSObject @property (nonatomic,copy) NSStri ...

随机推荐

  1. Ubuntu16.04Apache负载均衡+集群

    mod_proxy ,主代理模块Apache模块用于重定向连接;它允许Apache充当底层应用程序服务器的网关.mod_proxy_http ,它增加了对代理HTTP连接的支持.mod_proxy_b ...

  2. ubuntu之路——day9.3 softmax regression激活函数

    Softmax 用于在深度学习中处理多分类(C > 2)问题,分类器最后的输出单元需要Softmax 函数进行数值处理.关于Softmax 函数的定义如下所示: 其中vi表示 vi = z[L] ...

  3. 在JAVA中怎么比较Double类型数据的大小

    在JAVA中怎么比较Double类型数据的大小  我来答  浏览 33044 次   3个回答 #活动# “双11”答题活动,奖励加码!最高得2000元购物礼金! pollutedair 2015- ...

  4. 沃顿商学院的MBA课程

    沃顿商学院的MBA课程,分为必修课和选修课两部分 (一)必修课: 1.领导力:团队合作和领导力的基础 2.营销学:营销管理 3.微观经济学:微观经济基础 4.经济学:管理经济学的高级话题 5.统计学: ...

  5. GIS地理工具案例教程——批量去除多边形的重叠部分

    GIS地理工具案例教程--批量去除多边形的重叠部分 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com 问题:几乎所有的手工生产的数据,都存在多边形 ...

  6. 目标检测标注工具labelImg安装及使用

    目标检测中,原始图片的标注过程是非常重要的,它的作用是在原始图像中标注目标物体位置并对每张图片生成相应的xml文件表示目标标准框的位置.本文介绍一款使用方便且能够标注多类别并能直接生成xml文件的标注 ...

  7. Kotlin集合——Map集合

    Kotlin集合——Map集合 转 https://www.jianshu.com/p/da5cc9072f1e Kotlin的Map集合用于保存key-value对,其也被分为可变的和不可变的. 一 ...

  8. Ionic app IOS 在Xcode 模拟运行 真机调试

    1. 创建项目: sudo ionic start myApp tabs 2 cd 到刚才创建的项目 3. sudo ionic cordova platform add ios 把 ios 环境添加 ...

  9. Windows 下使用OpenSSL生成RSA公钥和私钥

    Windows 下使用OpenSSL生成RSA公钥和私钥 (1)下载OpenSSL 可到该地址下载OpenSSL: https://www.openssl.org/source/(https://ww ...

  10. Linux系统调优——网络(四)

    (1).查看网络(Network)运行状态相关工具 1)nload监控总体带宽使用情况 nload需要自己安装,而且在安装前需要安装epel-release [root@youxi1 ~]# yum ...