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方法跳转,够麻烦的。