Django框架学习(一)

用Django框架创建一个基本的投票应用程序

Django框架:
在这里插入图片描述

投票应用构成:
1、一个让人们查看和投票的公共站点
2、一个让管理员能添加,修改和删除投票的管理站点

创建项目

django-admin startproject mysite

mysite:最外层的 mysite/ 根目录只是你项目的容器, 可以将它重命名为任何你喜欢的名称。里面一层的 mysite/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 mysite.urls).
mysite/urls.py:Django 项目的 URL 声明,就像你网站的“目录”。 URL调度器
mysite/settings.py:Django 项目的配置文件。 Django 配置
在这里插入图片描述

创建投票应用

py manage.py startapp polls

在这里插入图片描述

编写视图

视图:一类具有相同功能和模板的网页的集合。 例如:在投票应用中需要下列几个视图: 问题索引页——展示最近的几个投票问题。
问题详情页——展示某个投票的问题和不带结果的选项列表。 问题结果页——展示某个投票的结果。
投票处理器——用于响应用户为某个问题的特定选项投票的操作。

打开 polls/views.py,编写以下代码

from django.http import HttpResponse
from .models import Question,Choice

def index(request):
    # (不使用模板)在index()函数里插入新内容,让他能展示数据库里以发布日期排序的最近5个投票问题,以空格分割
    latest_question_list=Question.objects.order_by('-pub_date')[:5]
    output=', '.join([q.question_text for q in latest_question_list])
    return HttpResponse(output)

将 URL 和视图关联

为了将 URL 和视图关联起来,Django 使用了 ‘URLconfs’ 来配置。URLconf 将 URL 模式映射到视图。
在polls目录里新建一个urls.py文件,并把这些视图添加进polls.urls模块里。

polls/urls.py

from django.urls import path
from . import views#.代表views文件与本文件在同一级目录
# 为该应用设置命名空间
app_name='polls'
#path()参数:
#route:是一个匹配 URL 的准则。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。
#view:当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数.
#name:为 URL 取名能使在 Django 的任意地方唯一地引用它,尤其是在模板中。
urlpatterns=[path('',views.index,name="index"),
             path('<int:question_id>/',views.detail,name='detail'),
             path('<int:question_id>/results/',views.results,name='results'),
             path('<int:question_id>/vote/',views.vote,name='vote'),
             ]

在根 URLconf 文件中指定我们创建的 polls.urls 模块,将polls应用本身的url与polls应用内视图的url进行拼接(include())

mysite/urls.py

#在 mysite/urls.py 文件的 urlpatterns 列表里插入一个 include()
from django.contrib import admin
from django.urls import include,path

urlpatterns = [
    path('polls/',include('polls.urls')),
    path('admin/', admin.site.urls),
]

模板(templates)

页面的设计写死在视图函数的代码里的。如果你想改变页面的样子,你需要编辑 Python 代码。所以需要使用 Django 的模板系统将页面的设计从代码中分离出来。

eg.在polls 目录里创建一个 templates 目录,再在templates 目录里,再创建一个目录 polls,然后在其中新建一个文件index.html。因此,模板文件的路径应该是 polls/templates/polls/index.html

更新一下polls/views.py(使用模板)

from django.http import HttpResponse
from django.template import loader
from .models import Question
def index(request):
    # 在index()函数里插入新内容,使其能展示数据库里以发布日期排序的最近5个投票问题。
    latest_question_list=Question.objects.order_by('-pub_date')[:5]
    #template=loader.get_template('polls/index.html')
    context={'latest_list':latest_question_list}
    #return HttpResponse(template.render(context,request))
    #render:载入模板,填充上下文,再返回由它生成的 HttpResponse 对象
    return render(request,'polls/index.html',context)

数据库配置

打开 mysite/settings.py
在这里插入图片描述

创建模型(数据库结构设计:创建数据库中的表)

在这个投票应用中,需要创建两个模型:问题 Question 和选项 Choice。Question 模型包括问题描述和发布时间。Choice 模型有两个字段,选项描述和当前得票数。

编辑polls/models.py:

#每个模型都被表示为 django.db.models.Model的子类
class Question(models.Model):
    question_text=models.CharField(max_length=200)
    pub_date=models.DateTimeField('date published')
     #增加__str__()方法,django自动生成的admin里也用这个方法来表示对象
    def __str__(self):
        return self.question_text


class Choice(models.Model):
    question=models.ForeignKey(Question,on_delete=models.CASCADE)
    choice_text=models.CharField(max_length=200)
    votes=models.IntegerField(default=0)
    def __str__(self):
        return self.choice_text

激活模型(保存数据库中的表)

首先需要把polls应用安装到项目里:
我们需要在配置类 INSTALLED_APPS 中添加设置。因为 PollsConfig 类写在文件 polls/apps.py 中,所以它的点式路径是 ‘polls.apps.PollsConfig’。

polls/apps.py:
在这里插入图片描述

在文件 mysite/settings.py 中 INSTALLED_APPS 子项添加点式路径。

在这里插入图片描述

运行 makemigrations 命令:
Django 会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次 迁移。

py manage.py makemigrations polls

运行migrate命令:
这个 migrate 命令选中所有还没有执行过的迁移(Django 通过在数据库中创建一个特殊的表 django_migrations 来跟踪执行过哪些迁移)并应用在数据库上 - 也就是将你对模型的更改同步到数据库结构上。

py manage.py migrate

改变模型(创建数据库中的表并保存)需要这三步:
编辑 models.py 文件,改变模型(建表)。
运行 python manage.py makemigrations 为模型的改变生成迁移文件。
运行 python manage.py migrate 来应用数据库迁移。

数据库API(对数据库中的表进行增删改查)

打开python命令行:

py manage.py shell

在这里插入图片描述

字段查询:字段查询文档

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值