设为首页 收藏本站
查看: 849|回复: 0

[经验分享] Python Web编程(七)

[复制链接]

尚未签到

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

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

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

DSC0000.gif DSC0001.gif model
DSC0002.gif 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

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59883-1-1.html 上篇帖子: python对文件及文件夹的一些操作 下篇帖子: flex与python后台的交互(原创)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表