Django超级简单的MVC实例

【前言】 写一遍django的入门例子,基于MVC设计模式,本程序有输入,处理,输出。开始用django搬运互联网上的数据。简单介绍一下什么是MVC模式。MVC就是把程序成分3部分职责。

【MVC】 V(View):系统的界面,django中就是网页。UI部分,用于接受用户的数据,输出用户的数据。 M(Model): 处理用户输入的数据,对数据进行加工。django中就是py文件中的方法。 C(Control):处理用户的功能请求,分配给不同的模块进行处理。django中就url的分发。

【功能概要】 提供一个表单,接受用户输入的数据(输入V),将用户的数据写出到数据库中(处理M),并将写入的结果显示在网页上(输出V)。这就是数据搬运的一个简单流程,在此最基本的模式上,会衍生出数据库的CRUD(增加,查询,更新,删除)操作。

以上这些动作,基本都是熟能生巧的技术工作,某种角度来说,就是模式化重复的体力活,不同的是,django可以快速的完成这些任务,短小精干,并且快速。

【HTTP】 [code] [08/Mar/2014 14:53:01] “GET /search/?name=%E9%83%9D%E5%BB%BA&email=sheng@verup.cn HTTP/1.1” 200 17 [/code]

这个是有两个输入项目表单提交的一条HTTP的get请求。 【CGI】 上面的那条Http的get请用,可以用各种类型的CGI程序去处理,比如说java,C,C++,PHP,ruby,python.可但是,功能最全打字越少,快速的处理HTTP请求,Get和Post的语言最好,先举出一个C语言写的CGI程序。

[code]

</br>

[/code]

[code] #include #include #include

int main(int argc, char** argv) { char *data; printf(“Content-type:text/html;charset=gb2312\n\n”); data = getenv(“QUERY_STRING”); return 0; } [/code]

“Content-type:text/html;charset=gb2312\n\n” 这个必须有,声明MIME类型。没有的话,结果网页无法正常显示,因为浏览器不知道程序输出的是什么。

上面的变量data就是用户发送过来的字典数据,从“&”符号分开的key pair数据,没一对数据的key和value在用“等号分割”

GET /search/?name=sheng&email=tee168@qq.com name=sheng & email=tee168@qq.com

用户需要先对”&”符号进行split,判断有多少组数据,然后在对每一组的数据进行“=”split,得到最后的数据,如下 char* name=”sheng”; char* email=”tee168@qq.com”;

得到了key和value

【视图实现(View)】 本功能数据的源头就是用户从表单输入的输入,所以视图V一部分是HTML表单。另外一部分是对用户在网页上发出的http请求的响应处理,python的CGI程序。 [code]

www.verup.cn

[/code]

在接受到用户输入的数据后,会对用户的数据进行处理, [code] from hotwords.models import Author

def GetAuthorInfo(request): return render_to_response(‘Author.html’)

def search(request): if ‘key’ in request.GET: message = request.GET[‘name’] + request.GET[‘email’]

    name = request.GET['name']
    email = request.GET['email']
    #在创建Author的models后,就会有对应的Autor对象产生(参考【模型(M)】)
    #引用Author的models,创建构造对象,调用一下save()方法,就完成了一条记录的插入,创造一个author对象,相当于表格的一条记录,用表单传入的数据,去构造对象,完成一条表记录的插入。
    author = Author(1, name, email)
    author.save()
    return HttpResponse(message) [/code]

对表输入的插入,删除,修改是常用的DB操作,map和list,这也都是主要的数据搬用动作,也是很没意思的部分。但是,你还得写。

【CRUD】

【模型(M)】 使用django的ORM,通过定义数据对象类来创建数据库的table,几乎就不用再直接SQL打交道了。下面就。。。看!

[code] from django.db import models from django.contrib import admin

class Author(models.Model): name = models.CharField(max_length=50) email = models.EmailField()

    def __unicode__(self):
            return self.name

[/code]

看到了没一共就两个字段,运行如下命令:

[code] python manage.py syncdb [/code]

django就会在数据库中创建名author表格。

[code] +——-+————-+——+—–+———+—————-+ | Field | Type | Null | Key | Default | Extra | +——-+————-+——+—–+———+—————-+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | NO | | NULL | | | email | varchar(75) | NO | | NULL | | +——-+————-+——+—–+———+—————-+ [/code]

作者:糖果

糖果

糖果
LUA从入门到放弃

Moonscript如何显示复选框

Moonscript如何显示复选框 Continue reading

Lapis框架的常用处理方法

Published on March 02, 2017