[Django]Django官方文档的投票Web应用笔记

本文基于Django 1.8.2官方文档,详细介绍了如何创建一个投票Web应用,涵盖从项目创建、应用安装、模型设计、URL配置、视图函数到模板的全过程。同时,讨论了代码改良、测试与错误修复,以及静态文件的处理,旨在提供全面的Django入门示例。
摘要由CSDN通过智能技术生成

摘要:Django官方文档(1.8.2)的投票web应用,django的入门示例,展示了一个django网页应用建立的大致过程。


<创建项目>

$ django-admin startproject mysite

在目标文件夹下打开命令行,输入创建django项目的指令(其中mysite为自定义的项目名),将会创建一个django项目的初始化文件夹,名为mysite。文件夹内有子文件夹mysite,内有文件setting.py,是该项目的基础设置文件。对该文件进行一些初始化修改:

(1)找到 LANGUAGE_CODE ,改为'zh-hans',修改文字为汉字;
(2)找到 TIME_ZONE ,改为'Asia/Shanghai',修改为本地时区。


<数据库初始化>
$ python manage.py migrate
在manage.py文件的路径下打开命令行,执行上面的指令(manage.py是协助项目管理的文件),将会创建一个空白的数据库,该数据库内没有任何表单,表单将通过创建模型而建立。

<运行服务器>
$ python manage.py runserver
执行指令后将会运行一个轻量级的服务器,然后可以通过 http://127.0.0.1:8000/ 或 http://localhost:8000/ 访问django的欢迎页面。可以手动选择服务器的端口,只需在指令后加上端口的数字,如;
$ python mange.py runserver 8080
则访问方式变更为http://127.0.0.1:8080/ 或 http://localhost:8080/

<创建应用>
$ python mange.py startapp polls

和创建项目类似,创建应用的指令由startproject变为startapp,执行指令后创建应用polls(投票),在项目文件夹里生成应用文件夹polls。但是此时应用没有完全创建成功,我们需要在项目内安装该应用。安装方法是在上文提到的settings.py文件内找到:

INSTALLED_APPS = (...)

然后在该元组的末尾添加上应用,示例:

INSTALLED_APP = (
    .......,
    'polls',
)

至此应用创建并安装成功。

<创建模型>
# -*- coding: utf-8 -*-
from __future__ import unicode_literals


import datetime


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


# Create your models here.
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


    def __str__(self):
        return self.question_text


    def was_published_recently(self):
        '''模型也是类,所以也可以有方法。timezone.now-timedelta(days=1)表示一天前'''
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)


class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)


    def __str__(self):
        return self.choice_text

模型代码放在路径polls/models.py的文件内,上文已经提到,模型是保存进数据库里的表的格式定义。上述代码创建了两种模型:Question和Choice(它们都是models.Model的子类)。其中表Question有两列,问题描述question_text和发布时间pub_date。表Choice同理,其中question是Question的子类。注意到代码中每一列除了ForeignKey外都是某种Field,这是数据保存进数据库的格式,类似的Field有很多种。

<激活模型>
创建模型后还需要激活模型才能把模型描述的表放进数据库里。执行下述指令告诉django模型文件发生了变动:
$ python manage.py makemigrations polls	

再执行下述指令在数据库中创建模型所对应的表:

$ python manage.py migrate
执行完毕后数据库依然是空白的,但不再是空的了,现在数据库里已经有待填入数据的表了。接下来通过django的shell来测试一下模型的工作情况。

<shell>
$ python manage.py shell
执行指令将在命令行里进入熟悉的python的shell界面,但这个shell是已经准备好django的环境了。接下来示范在shell里对数据库做一些数据修改,了解它的工作情况。
>>> from polls.models import Question, Choice
 #从polls.models包导入两个模型(类)


>>> Question.objects.all()
<QuerySet []> 或 []  
#此时表Question是空的,Question.objects.all()是查询表所有数据的操作


#创建并保存数据
>>> from django.utils import timezone		#timezone,django里的时间辅助
>>> q = Question(question_text="What's new?", pub_date=timezone.now())
>>> q.save()


#查询
>>>q.id
1
>>>q.question_text
"what's new?"


#查看问题q所对应的Choice表
#因为Choice()里有models.ForeignKey(Question),所以Question的实例有choice_set属性
>>> q.choice_set.all()
(QuerySet [])


#为问题q创建投票选项
>>> q.choice_set.create(choice_text='Not much',votes=0)
>>> q.choice_set.create(choice_text='The sky',votes=0)
>>> q.choice_set.create(choice_text='Just hacking again',votes=0)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值