Django学习笔记2:一个简单的开发实例

Technorati 标签: Python,Django

目标:通过开发一个简单的Todo管理应用,熟悉Django的基本概念、和使用。

运行环境

Windows Vista + Python 2.7 + Django 1.5

准备工作

* 创建工程

python C:\Python27\Lib\site-packages\django\bin\django-admin.py startproject mytodo

 

* 启动调试服务器

python manage.py runserver

Validating models...

0 errors found

October 11, 2012 - 11:06:08

Django version 1.5, using settings 'mytodo.settings'

Development server is running at http://127.0.0.1:8000/

Quit the server with CTRL-BREAK.

 

在浏览器中访问 http://127.0.0.1:8000/,能够正常访问。

 

* 配置数据库

修改 mytodo/settings.py, 使用sqlite3;

生成数据库表项:python manage.py syncdb

 

* 修改时区配置

TIME_ZONE = 'Asia/Shanghai'

 

# 创建实现Todo功能的 Model

python manage.py startapp todo

 

准备工作完成,接下来进行 todo model的开发。

 

应用Model的开发

* settings配置

编辑 mytodo/settings.py 中的下列属性:

INSTALLED_APPS:添加对 todo model的支持;

TEMPLATE_DIRS:配置模块使用的 template 位置;

 

* Model的实现

在 todo/models.py 文件中定义数据库

class TodoEntry(models.Model):task = models.CharField(max_length=120)status = models.IntegerField()create_date = models.DateTimeField('create date')def __unicode__(self):return self.task

这里定义了一个数据库表 TodoEntry,包含三个字段:task, status, create_date。

 

* 配置URL

编辑 mytodo/url.py 中的 urlpatterns,添加以下配置:

url(r'^todo/$', 'todo.views.index'),
url(r'^todo/add/$', 'todo.views.add'),
url(r'^todo/del/(?P<entry_id>\d+)/$', 'todo.views.delete'),

我们将实现三个view 函数,分别实现显示、添加、删除 功能。

 

* View 函数实现

在 todo/views.py 文件中,实现view函数。

# 'todo.views.index' def index(request):all_todo_list = TodoEntry.objects.all().order_by('-create_date')return render_to_response('todo/index.html', {'all_todo_list' : all_todo_list}, context_instance = RequestContext(request))

说明:1) 加载todo/index.html模板,并通过变量名 all_todo_list 将数据传递给模板。2) 将上下文实例传入,配合模板文件中的 {% csrf_token %} 标记的需求。

# 'todo.views.add'def add(request):try:task_msg = request.POST['task_msg']entry = TodoEntry(task = task_msg, status = 1, create_date = timezone.now())entry.save()except (KeyError):return render_to_response('todo/index.html', {'error_msg' : "no task msg isprovided!"}, context_instance = RequestContext(request))return HttpResponseRedirect("/todo/")

说明:1) 通过HttpRequest.POST获取表单提供的数据,'task_msg’是表单中输入文本框的name属性。2) 数据添加后,调用HttpResponseRedirect 返回起始页面。

# 'todo.views.delete'def delete(request, entry_id):entry = get_object_or_404(TodoEntry, pk=entry_id)entry.delete()return HttpResponseRedirect("/todo/")

说明:删除的时候,需要指明删除条目的ID,这个参数通过 entry_id传入。在URL定义中,捕获了ID,并且通过 ?P<entry_id> 定义了keyword 参数。

 

* Template定义

view函数中,引用了模板文件 todo/index.html,实现如下:

<form action = "/todo/add/" method = "POST">{% csrf_token %}New: <input type = "text" name = "task_msg" /><input type = "submit" value = "Add" />
</form>{% if all_todo_list %}{% for entry in all_todo_list %}<p> {{ entry.task }}<a href="/todo/del/{{ entry.id }}/"> delete </a></p>{% endfor %}
{% else %}<p>No todo entry are available.</p>
{% endif %}

说明:1) 表单使用了POST 类型;2) 使用变量 entry.id 将ID填到URL中,从而将删除操作定位到具体的条目。

 

-----------------

Weichsel

2012.10.15

转载于:https://www.cnblogs.com/weichsel/archive/2012/10/15/2724108.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五大板块(2)—— 指针

参考&#xff1a;五大板块&#xff08;2&#xff09;—— 指针 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-03-18 16:01:22 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/114981482 本文为学习笔记&#xff0c;整合课程内容及文章如下&…

基于word API 创建的可以打开word的自定义控件

代码基本框架来源&#xff1a; CSDN 博主&#xff1a;zjlovety的专栏 地址&#xff1a;https://blog.csdn.net/zjlovety/article/details/24463117 public partial class WinWordViewer : UserControl { public WinWordViewer() { Initializ…

台式计算机机箱都一样吗,别以为组装台式机很简单,机箱选择大有学问

原标题&#xff1a;别以为组装台式机很简单&#xff0c;机箱选择大有学问曾经组装台式机的时候对于机箱完全没有在意&#xff0c;总觉得随便选择一款就可以了&#xff0c; 而且是挑便宜的选择&#xff0c;而那些机箱有便宜也有贵&#xff0c;其实里面的设计完全不一样&#xff…

解压ubi文件_Linux 文件压缩与解压相关

tar [-cxtzjvfpPN] 文件与目录 ....参数&#xff1a;-c &#xff1a;建立一个压缩文件的参数指令-x &#xff1a;解开一个压缩文件的参数指令-t &#xff1a;查看压缩文件里面的文件特别注意&#xff1a; c/x/t 同时只能存在一个&#xff0c;原因是我们不可能同时压缩与解压缩。…

五大板块(3)—— 结构体

参考&#xff1a;五大板块&#xff08;3&#xff09;—— 结构体 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-03-18 16:02:43 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/114981743 目录结构体的三种定义赋值方法结构体数组结构体指针…

tp5更改入口文件到根目录的方法分享

tp5把入口文件放到了public目录中&#xff0c;对于服务器或者vps来说没啥&#xff0c;因为可以指定目录&#xff0c;但是对于虚拟主机就不行了&#xff0c;我们必须吧index.php这入口文件放到根目录&#xff0c;那么我么需要改一下相对的引入文件的路径就可以了&#xff0c;代码…

html 查找添加联系人,使用phonegap查找联系人的实现方法

实例如下&#xff1a;Database Exampledocument.addEventListener("deviceready", onDeviceReady, false);function onDeviceReady() {}function onSuccess(contacts){document.write(contacts.lengthcontacts found.);for(var i0;ifor(var j0;jdocument.write("…

实现连麦_微信年底放了个大招,视频号重磅升级,打赏直播连麦美颜抽奖齐上...

期待已久的视频号连麦功能来了。这次来的不仅有连麦功能&#xff0c;还有视频号打赏的微信豆体系&#xff0c;创作者想要的入口也有了。让我们一起来看看有什么新功能吧&#xff01;太长不看版本&#xff1a;「附近的人」变「附近的直播和人」连麦上线&#xff0c;还有美颜、抽…

【转】 .NET 打印水晶报表(CrystalReport)时,出现“查询引擎错误 C:/DO...

2019独角兽企业重金招聘Python工程师标准>>> 本地开发环境&#xff1a; Win XP, Visual Studio 2003 Oracle 项目背景&#xff1a; WinForm 工程&#xff0c;在一个表单中用Treeview控件显示 部门层级信息&#xff0c;然后有 按照相同格式&#xff08;layout…

洛谷 1226 取余运算||快速幂

洛谷 取余运算||快速幂 1226 其实比起楼下的大佬们&#xff0c;我主要是多了些位运算和讲解。 想法一&#xff1a; 直接输出 pow(b,q)%k 嗯~~勇气可嘉&#xff0c;但是看一眼数据范围&#xff08;长整型&#xff09;就会意识到&#xff0c;这个方法也许一个点都过不了。 想法二…

html5 查看图片,html5实现图片预览和查看原图

一、页面元素只有三个简单元素&#xff1a;拖拽区域二、添加简单的样式&#xff1a;.dragarea{width:300px;height:100px;background:#ddd;text-align:center;line-height:100px;}.drag_hover{background:rgba(0,0,0,.4) !important;}.item{width:300px;height:100px;float:lef…

五大板块(4)——链表

参考&#xff1a;五大板块&#xff08;4&#xff09;——链表 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-02-15 09:33:29 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/114981905 目录一、对比链表与数组同样是存放一串数据&#xff0…

boolean类型默认值_「软帝学院」Java的基本数据类型

Java的基本数据类型Java的两大数据类型: 内置数据类型 引用数据类型内置数据类型Java语言提供了八种基本类型。六种数字类型(四个整数型&#xff0c;两个浮点型)&#xff0c;一种字符类型&#xff0c;还有一种布尔型。byte&#xff1a; byte数据类型是8位、有符号的&#xff0c…

Quickly Find/ Open a file in Visual Studio

ctrl/, enter ">of " search item http://codeblog.shawson.co.uk/quickly-find-open-a-file-in-visual-studio/转载于:https://www.cnblogs.com/joe-yang/archive/2012/10/19/2731201.html

poj 3070

题面 大意就是求斐波那契数列第n项&#xff0c;做法为矩阵快速幂。 代码 #include<iostream> #include<cstdio> #include<cstring> #define LL long longusing namespace std; const int mod 10000; struct Mat{LL a[4][4];Mat(){memset(a,0,sizeof(a));}M…

计算机组装与维修预习,《计算机组装与维修》预习报告、实习报告撰写要求.docx...

《计算机组装与维修》预习报告、实习报告撰写要求本次《计算机组装与维修》课程的实验报告由两部分组成&#xff1a;预习报告和实习报告(总结)。其要求除了必须符合“《计算机组装与维修》课程考核标准及管理办法”外&#xff0c;强调要求预习报告要求每个参加实习的同学必须在…

Updating -- Linux小知识

没想到&#xff0c;10几年后又开始重拾这些曾经学习和使用过的知识&#xff0c;也许一切都是轮回&#xff0c;还好能捡起来。 1. 常用命令(参考 Linux 命令大全 | 菜鸟教程) #命令说明样例1whoami当前用户ID 2id当前用户ID 和 用户组IDid -un # 用户名 id -gn # 用户组…

五大板块(5)——字符串

参考&#xff1a;五大板块&#xff08;5&#xff09;——字符串 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-03-18 16:03:48 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/114982019 目录一、字符串的定义方式与输出二、字符串的结尾是…

潘多拉设置有线中继_避坑指南:购买无线中继器必看

房子太大&#xff0c;一台路由器容易覆盖不全&#xff0c;或者想蹭隔壁老王家的WiFi&#xff0c;这时候需要用到无线中继器。无线中继器主要作为无线路由器的补充产品&#xff0c;选得好就是锦上添花&#xff0c;选不好依旧是气到爆炸。所以&#xff0c;在购买无线中继器前&…

poj2154 Color ——Polya定理

题目&#xff1a;http://poj.org/problem?id2154 今天学了个高端的东西&#xff0c;Polya定理... 此题就是模板&#xff0c;然而还是写了好久好久... 具体看这个博客吧&#xff1a;https://blog.csdn.net/wsniyufang/article/details/6671122 代码如下&#xff1a; #include&l…