Python Web编程(八)
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
在这里,我们使用了Generic View,所以view.py里面的方法就可以删掉了,只需要保留update方法
还有一点需要注意,因为我们在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做了简单修改)
object_list默认的返回对象是object_list,因此,我们需要修改student_list.html
object_detail、create_object、update_object默认使用的对象是object,
因此,我们需要修改student_detail.html和student_form.html
最后,由于urls.py变了,我们还需要修改下student_list.html中的JS。
对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/
下回预告:
到现在为止,还只是单表操作,这在实际运用中是不可能如此简单的,那么,多表联合的情况如何呢???
像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/
下回预告:
到现在为止,还只是单表操作,这在实际运用中是不可能如此简单的,那么,多表联合的情况如何呢???