shikailun的日志

Django编写第一个app

看了一天的The Django Book,被Django的两点多吸引,1是自己配置url形式,这个真的太方便了,想当时为了为了仿notepad.cc的url形式,研究了半天的.htaccess。。。WordPress的自定义固定链接我不知道是怎么实现的,Django到能轻易实现,url可以变得非常灵活;2是Model和数据库的对应,在SSH架构中,需要一个hbm.xml和一个实体类,Django里只需定义class即可,而且可以直接说明many-to-many或one-to-many,非常快。当然忍不住也想自己试试敲几行代码,这个app非常简单,实现了用户登陆的功能,显示一个表单供用户登陆,成功就显示成功。

首先当然需要建立一个工程:

django-admin.py startproject UserSystem

在settings.py配置数据库信息。

下面就可以建立app了

manage.py startapp users

现在工程下就自动生成了users文件夹,我们的model就需要写在models.py里,比如用户信息的账号密码:

class User(models.Model):
    username=models.CharField(max_length=20)
    password=models.CharField(max_length=30)

在settings.py的INSTALLED_APPS中加入刚刚建立的app:

'UserSystem.users',

下面就可以建立数据库了:

manage.py syncdb

syncdb命令是同步你的模型到数据库的一个简单方法,它会根据INSTALLED_APPS里设置的app来检查数据库,如果表不存在,它就会创建它。

下面就可以用python编写各种函数了:

def main_page(request):
    return render_to_response('index.html')
def admin(request):
    return render_to_response('user/login.html')
def login(request):
    username = request.POST['username']
    password = request.POST['password']
    if username and password:
        user=User.objects.filter(
            username__exact=username,
            password__exact=password
        )
        if user:
            return render_to_response('user/success.html')
        else:
            return render_to_response('user/fail.html')
    else:
        return render_to_response('user/login.html')

main_page是主页面,admin登陆页面

几个html随便写写即可,login.html中要注意字段name对应。

配置url:

url(r’^$’,main_page), url(r’^login’,login),

对正则表达式不懂,不过根据教程仿几个url还是没问题的。

这样差不多就可以了,首页是主页面

点击主页面上的登陆,跳到登陆页面(login.html)

用户在这个表单输入并提交登陆成功或失败

自己配置URL真是一件神奇的事情,可以直接过滤不想要的数据,而且所有的页面都受控制,隐藏了绝对地址,想当时J2EE期末大作业我为了隐藏JSP绝对路径,所有页面都需要一个action方法跳转,够麻烦的。

Posted on
This entry was posted in technology  and tagged Django  Python  后端