真是堕落,时隔一年半,我才更新了一篇。
这个期间,Django也有了更新,Python也更新了好几个版本,我却没有丝毫的进步,真是罪过......
好了,言归正传,前面介绍了Url、模板、数据库方面的知识,有了这些基本上就可以搞定一个简单的应用了,这次就把以前的知识融合起来,做一个单表的学生管理系统,很简单,增删改查。
在你的工程下,新建一个应用:python manage.py startapp students,然后修改settings.py中的INSTALLED_APPS,把这个新应用加进去。
这么一个管理系统,当然是数据库先行,在models.py中建一个模型吧。
model
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
birth = models.DateTimeField()
sex = models.CharField(max_length=1)
email = models.EmailField()
website = models.URLField()
def __str__(self):
return self.full_name
class Admin:
pass
模型里面用到的那些EmailField、URLField什么的,我就不介绍了,大家自己查一下吧。
别忘了同步一下数据库,manage.py syncdb
接下来就是HTML了,这个HTML我还真花费了点时间来做,大家来看看students.html:
HTML
function modify(id){
document.form1.action="/students/modify" + id + "/";
document.form1.submit();
}
function del(id){
document.form1.action="/students/delete" + id + "/";
document.form1.submit();
}
function add(){
window.location.href='add/';
}
All Students
Name
Address
Birthday
Sex
Email
Website
{% for student in students %}
{{ student.name }}
{{ student.address }}
{{ student.birth|date:"F j, Y" }}
{{ student.sex }}
{{ student.email }}
{{student.website}}
{{student.id}}
{% endfor %}
效果是,每一条数据后有两个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
Student
name
address
birth
sex
email
wesite
id
到此为止,urls.py已经确定了,加入最后一个:
(r'^update/', 'students.views.update'),
好了,即将大功告成,我们只剩下views.py了,这个就简单了,只是控制一下页面跳转,还有更新数据库了。
Code
from django.http import HttpResponse
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.template import Template, Context
from django.template.loader import get_template
from models import Student
def all(request):
students = Student.objects.all()
return render_to_response('students.html', {'students': students})
def modify(request, sid):
student = Student.objects.get(id=sid)
return render_to_response('student.html', {'student': student})
def delete(request, sid):
s = Student(id=sid)
s.delete()
return HttpResponseRedirect('/students/')
def add(request):
return render_to_response('student.html')
def update(request):
if request.method == 'POST':
name = request.POST['name']
email = request.POST['email']
website = request.POST['website']
sex = request.POST['sex']
birth = request.POST['birth']
address = request.POST['address']
id = request.POST['id']
s = Student(name=name,
email=email,
website=website,
sex=sex,
birth=birth,
address=address)
if id != "":
s.id = id
s.save()
return HttpResponseRedirect('/students/')
让我们试一下吧。
manage.py runserver
没有错误的话,http://127.0.0.1:8000/students/,这个就是正确的地址,自己试一下吧。
做到这里,不知道聪明的你发现了没有,student.html里面的代码很罗嗦,有没有办法简洁一些呢?
另外怎么页面输入什么都是可以的啊?
欲知怎样解决,请听下回分解!
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com