关于标签‘Python’ 的所有文章

Python作为一种动态语言,它的快速开发是Java等动态语言无法比拟的。
像Java,想写个Hello,World都得定义Class,main方法,而Python则简简单单一句话就搞定。
Django作为Python开发的框架,自然也会有快速开发的特点。
Generic View为我们的快速建站提供了支持,下面就简单的介绍一下。

在 Python Web编程(七)里面我们做了一个简单的单表的增删改查,我们写了很多的view方法,
但是呢,这都是不必须的,因为Django考虑到了,增删改查这种基本操作怎么还需要每个都写出方法呢,
这就有了Generic View。
下面就把Python Web编程(七)里面的东东改造成利用Generic View的。
我们要利用到以下几个Generic View
django.views.generic.list_detail.object_list
django.views.generic.list_detail.object_detail
django.views.generic.create_update.create_object
django.views.generic.create_update.update_object
django.views.generic.create_update.delete_object
具体的使用方法介绍请参照Django的文档。

为了利用这几个Generic View,我们修改下urls.py
urls.py

在这里,我们使用了Generic View,所以view.py里面的方法就可以删掉了,只需要保留update方法
view.py

还有一点需要注意,因为我们在urls.py里面都没有指定模板,Django会去猜应该用哪个模板。
默认的模板如下
object_list   <app_label>/<model_name>_list.html
object_detail <app_label>/<model_name>_detail.html
create_object <app_label>/<model_name>_form.html
update_object <app_label>/<model_name>_form.html

所以,根据需要你更改一下模板路径,再修改HTML的名字
students.html  -->  student_list.html
student.html   -->   student_form.html
因为之前我没有考虑只查看不修改的情况,而Generic View里面正好有对应的View(object_detail),
所以,我们还需要给它做一个只是查看用的模板 student_detail.html。(只是对student_form.html做了简单修改)
student_detail.html

object_list默认的返回对象是object_list,因此,我们需要修改student_list.html
{% for student in students %}
--->
{% for student in object_list %}

object_detail、create_object、update_object默认使用的对象是object,
因此,我们需要修改student_detail.html和student_form.html
student_detail.html

student_form.html

最后,由于urls.py变了,我们还需要修改下student_list.html中的JS。
old
--->
new

对Student的增删改查修改完工。
试一下吧。
http://127.0.0.1:8000/students/
http://127.0.0.1:8000/students/creat/
http://127.0.0.1:8000/students/update/1/
http://127.0.0.1:8000/students/1/

下回预告:
到现在为止,还只是单表操作,这在实际运用中是不可能如此简单的,那么,多表联合的情况如何呢???



真是堕落,时隔一年半,我才更新了一篇。
这个期间,Django也有了更新,Python也更新了好几个版本,我却没有丝毫的进步,真是罪过......
好了,言归正传,前面介绍了Url、模板、数据库方面的知识,有了这些基本上就可以搞定一个简单的应用了,这次就把以前的知识融合起来,做一个单表的学生管理系统,很简单,增删改查。

在你的工程下,新建一个应用:python manage.py startapp students,然后修改settings.py中的INSTALLED_APPS,把这个新应用加进去。

这么一个管理系统,当然是数据库先行,在models.py中建一个模型吧。
model

模型里面用到的那些EmailField、URLField什么的,我就不介绍了,大家自己查一下吧。
别忘了同步一下数据库,manage.py syncdb

接下来就是HTML了,这个HTML我还真花费了点时间来做,大家来看看students.html:
HTML

效果是,每一条数据后有两个Button,分别是Modify和Delete,这两个Button所需要的参数{{student.id}}是Django给我们加的,因为我没有指定模型的主键,它就自动给加了一个自增长的主键。

数据的最下面就是一个Add Button,这三个Button都是通过JS来实现Url跳转的,而且方式不太一致,大家可以仔细看一看JS中的三个方法。

到这里,Url已经可以基本确定了:
    (r'^$', 'students.views.all'),
    (r'^modify(\d+)/', 'students.views.modify'),
    (r'^delete(\d+)/', 'students.views.delete'),
    (r'^add/', 'students.views.add'),

好,先暂停一下,不要就这么把这些Url加到工程的urls.py中去,我们这样做:
在students这个应用中建一个urls.py文件,把上面几个Url加到这里,然后我们修改工程的urls.py,
把下面这句加到工程的urls.py中:
(r'^students/', include('mysite.students.urls')),
这样,以后我们只需修改自己应用的urls.py了。

当然了,你不会把之前的那个Html放到整个工程下面了吧。拿出来吧,在我们的应用下面建一个文件夹templates,这个应用的HTML都放到这里。然后把这个路径加到工程的settings.py中。不会不知道那个节点吧?是TEMPLATE_DIRS节点。

剩下的就是修改信息的HTML页面了,Esay,下面就是student.html:
modify

到此为止,urls.py已经确定了,加入最后一个:
    (r'^update/', 'students.views.update'),

好了,即将大功告成,我们只剩下views.py了,这个就简单了,只是控制一下页面跳转,还有更新数据库了。
Code

让我们试一下吧。
manage.py runserver

没有错误的话,http://127.0.0.1:8000/students/,这个就是正确的地址,自己试一下吧。


做到这里,不知道聪明的你发现了没有,student.html里面的代码很罗嗦,有没有办法简洁一些呢?
另外怎么页面输入什么都是可以的啊?

欲知怎样解决,请听下回分解!