Django初级手册1-项目和应用的创建与简单的数据库操作
创建项目
django-admin.py startproject mysite
1. 目录结构
mysite/ #项目的名称
manage.py #可通过命令和项目进行交互的文件
mysite/ #项目的实际文件夹
__init__.py #空文件,告诉python这个目录是个python包
settings.py #该项目的配置文件
urls.py #项目的URL声明,dispatch文件
wsgi.py #项目wscgi的一个入口
2. 启动开发机
只用于开发环境,不能用于生产环境!
开发环境支持热启动
python manage.py runserver #default 8000
#如果主机想访问虚拟机需要指定IP和端口
python manage.py runserver 0.0.0.0:8000
3. 数据库
需求MySQLdb
pip2.7 install mysql-python -i http://pypi.douban.com/simple
settings.py文件中进行设置
#mysql的数据库必须提前建好
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
#修改时区
#TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
#默认apps
INSTALLED_APPS = (
'django.contrib.admin', #管理页面
'django.contrib.auth', #权限系统
'django.contrib.contenttypes', #内容框架
'django.contrib.sessions', #回话框架
'django.contrib.messages', #消息框架
'django.contrib.staticfiles', #管理静态内容框架
)
#此命令会安装上述的app,并生成对应的表,在此建立系统管理员帐号和密码
python manage.py syncdb
创建模型
app完成某个特定的功能,诸如微博系统,公共记录数据库亦或是一个简单的投票程序。
project是若干配置文件与许多app组成的特殊网站。
project可以包含很多app,app也可用于多个project。
python manage.py startapp polls
这会生成
polls/
__init__.py
admin.py
models.py
tests.py
views.py
首先应该定义模型。
模型是关于数据的独立、限定的资源。它包括要存储的数据的必要的字段和行为。
Django遵循DRY原则,即Don't repeat youself——每一个独立的概念或数据都存储在一个地方,并且存储一份。
定义所有的模型,关于投票,创建投票和选择两个模型,投票包括一个问题和一个发起日期,选择包括选择的内容和投票计数。每一个选择应该关联一个投票。
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
每个模型对应一个类,每个类继承自models.Model,每个类对应一张表。
每个类成员对应该表的列,并且有自己的类型。有些参数是必须的例如max_length,它不只是数据库的模式,还包括页面的验证。而整数类型的默认值是可选的。
最后类之间的关系用外键来描述。该处需要注意的是,poll会自动处理为poll_id加到
激活模型
首先应该在settings.py中添加该应用。
INSTALL_APPS = (
...
...
'polls',
)
然后键入命令,观察models生成的SQL语句。
python manage.py sql polls
这里有一些额外的命令可以观察实际的构成。
python manage.py validate #检查错误,尤其是构建apps的model后检查,再运行syncdb之前
python manage.py sqlcustom polls #输出应用定义的custom sql statement
python manage.py sqlclear polls #输出应用中有必要DROP TABLE的语句
python manage.py sqlindexes polls
python manage.py sqlall polls #输出sql sqlcustom sqlindexes的集合
然后要实际运行这些语句,在数据库中实际建立他们。该语句只用于初次创建时
python manage.py syncdb
调用API来工作
#进入互动界面
python manage.py shell
>>> from polls.models import Poll, Choice
#显示所有实例
>>> Poll.objects.all()
[]
>>> from django.utils import timezone
#创建一个对象
>>> p = Poll(question="What's new?", pub_date=timezone.now())
#存入数据库
>>> p.save()
#可使用p.question等修改,查看类成员函数,修改后再次save即可
>>> Poll.objects.all()
[<Poll: Poll object>] #这是由于__unicode__没有设置的结果,
class Poll(models.Model):
# ...
def __unicode__(self): # Python 3: def __str__(self):
return self.question
#这样即可输出
>>> Poll.objects.all()
[<Poll: What's new?>]
#查找数据库,filter(类成员名称后双下划线,可以加入各种比较)
#get可直接用来查找,其中pk可用来查找主键,PrivateKey
>>> Poll.objects.filter(question__startswith='What')
[<Poll: What's up?>]
>>> current_year = timezone.now().year
>>> Poll.objects.get(pub_date__year=current_year)
<Poll: What's up?>
因为Poll是Choice的外键,所以Poll有如下的成员函数
>>> p.choice_set.all()
[]
>>> c = p.choice_set.create(choice_text='Just hacking again', votes=0)
>>> p.choice_set.all()
[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
>>> p.choice_set.count()
3
# Choice也有如下的成员变量
>>> c.poll
<Poll: What's up?>
#删除某个记录
>>> c = p.choice_set.filter(choice_text__startswith='Just hacking')
>>> c.delete()
Django初级手册1-项目和应用的创建与简单的数据库操作的更多相关文章
- django之三剑客、静态文件配置、请求响应对象、数据库操作
三剑客 from django.shortcuts import render,HttpResponse,redirect HttpResponse # 返回字符串 render(response, ...
- Django初级手册3-视图层与URL配置
设计哲学 在Django中一个视图有指定函数和指定模版组成.对于某些特定的应用应该分成若干视图.例如博客系统 Blog主页面 详细页面入口 基于年的页面展示 基于月的页面展示 基于天的页面展示 评论行 ...
- Django初级手册2-管理界面的使用及定制
管理界面的使用 管理界面的URL,帐号和密码在第一次输入syncdb时建立 http://127.0.0.1:8000/admin/ 将app加入管理界面 编辑polls/admin.py from ...
- Django初级手册6-静态文件
用Django加载外部文件 在Django中iamges,JS或者CSS通称为static文件 定制APP的外观 一般放在应用目录下的static/polls/目录下,下为polls/static/p ...
- Django初级手册5-自动化测试
什么是自动化测试 每次更新完系统后,可自动进行测试,而不是手工从头测试一遍: 从长远和全局的角度看,测试能节约我们的时间: 测试是一种积极的行为,它能预防问题,而不仅仅是识别问题: 测试有助于代码美观 ...
- Django初级手册4-表单与通用视图
表单的编写 1. detail.html模版的编写 <h1>{{ poll.question }}</h1> {% if error_message %}<p>&l ...
- Django简单的数据库操作
当然,本篇的前提是你已经配置好了相关的环境,这里就不详细介绍. 一. 在settings.py文件中设置数据库属性. 如下: DATABASES = { 'default': { 'ENGINE': ...
- Django学习(一)---基本配置及创建项目、应用
安装:在Django官网下载最新版Django然后通过pip安装即可 一.创建项目 进入文件夹,打开cmd窗口,输入django-admin startproject myblog(项目名) 二.创建 ...
- Python Django CMDB项目实战之-3创建form表单,并在前端页面上展示
基于之前的项目代码 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页.index页.文章页面 Python Django CMDB项目实战之-2创建APP. ...
随机推荐
- LeetCode 34 Search for a Range (有序数组中查找给定数字的起止下标)
题目链接: https://leetcode.com/problems/search-for-a-range/?tab=Description Problem: 在已知递减排序的数组中,查找到给定 ...
- sencha touch 在线实战培训 第一期 第七节
2014.1.13晚上8点过一点开的课 本期培训一共八节,前三堂免费,后面的课程需要付费才可以观看. 本节内容: 非结构化数据传输 通过js调取phonegap实现图片采集.上 ...
- Packetbeat协议扩展开发教程(1)
Packetbeat ( https://www.elastic.co/products/beats/packetbeat )是一个开源的网络抓包与分析框架,内置了很多常见的协议解析,如HTPP.My ...
- ftp命令大全
FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令.熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之 ...
- Spark2 Dataset之collect_set与collect_list
collect_set去除重复元素:collect_list不去除重复元素select gender, concat_ws(',', collect_set(children)), ...
- 8.30前端jQuery和数据结构知识
2018-8-30 16:37:17 单链表的demo 从俺弟家回来了! 发现,还是要努力学习是很重要的!!努力学习新的感兴趣的东西!! 多读书还是很重要的!!! 越努力,越幸运! # coding: ...
- 重写jquery serialize 方法
/**取表单中的对象 *attrName:为元素的的属性名称不设置则默认为name */ $.fn.serialize = function (attrName) { var ret = {}; if ...
- HDU 6343 - Problem L. Graph Theory Homework - [(伪装成图论题的)简单数学题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6343 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- POJ 3067 - Japan - [归并排序/树状数组(BIT)求逆序对]
Time Limit: 1000MS Memory Limit: 65536K Description Japan plans to welcome the ACM ICPC World Finals ...
- Python哈希表的例子:dict、set
dict(字典) Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 和list比较,dic ...