Python Web开发:Django入门学习笔记(2)

来源:互联网 发布:hadoop 端口 编辑:程序博客网 时间:2024/04/30 01:23

http://blog.csdn.net/omg2hei/article/details/68939805
这个是昨天的笔记。
接着昨天的写。
到了接收用户发送的数据这块了,感觉这块作者说的有点啰嗦,其实接收用户发送的数据,到返回动态页面,完全可以放在一起写。
接收用户的数据,常规来讲有GET方法,和POST方法,POST方法在常规来讲就是设计一个表单,用户提交就是向服务端发起POST请求。
修改index.html文件。
大概长这样

<!DOCTYPE html><html><head>    <title>fuck</title></headss<body>    <h1 style="background-color: antiquewhite;color:black;">用户输入</h1>    <form action="/index" method="post">        <input type="text" name="username">        <input type="password" name="password">        <input type="submit" value="提交">    </form>    <script src="/static/js/jquery-migrate-1.4.1.js"></script></body></html>

登录表单搞定后,就去搞view.py中的视图函数,处理用户提交的post请求。

对了那篇文章中还说,由于Django有其自身的跨站请求保护机制,要注释掉’django.middleware.csrf.CsrfViewMiddleware’,这行,作为一个安全从业者,这点我是绝对不同意的,csrf的危害还是很大的,具体的话以后再说。这里是觉逼不能注释的,应该在index.html的form表单中添加这行{% csrf_token %}可以解决这个问题。
然后运行。
运行的时候爆了两个错误,一个是url路由相关的问题,到路由文件下将index后面的/去掉就可以了。
另一个错误,是说加载的那个静态文件不是一个元组,要去那边设置一下在后边加个,号。这样的话在保证程序正常运行的情况下,我们已经接收用户的输入了。
然后下一个是返回动态页面。
先更新一下view.py文件,创建一个用户列表
user_list=[
{“user”:”fuck”,”pwd”:”cao”},
{“user”:”test_user”,”pwd”:”test_pwd”},
]
然后再视图函数的index函数的第三个参数中设置其返回值。
{“data”:user_list}
大概意思就是说,有一个data变量,在赋予了user_list值之后,通过django自身的模板语言渲染给html文件后返回给浏览器。
接下来我们要做的就是去修改那个html文件

    <h1 style="background-color: antiquewhite;color:black;">用户展示</h1>    <table border="1">        <thead>            <th>用户名</th>            <th>密码</th>        </thead>        <tbody>            {% for line in data %}            <tr>                <td>{{ line.user }}</td>                <td>{{ line.pwd }}</td>            </tr>            {% endfor %}        </tbody>    </table>

就是加了一个表格,去做用户信息的展示。
刚才视图函数中,忘记处理用户的输入了(即处理用户发送的数据)。
在index函数中加上这两行。
temp = {“user”:username,”pwd”:password}
user_list.append(temp)
ok,返回动态页面这步也搞定了。
然后就是数据库相关的内容了,使用sqlite数据库,来的快,主要还是为了展示这个功能。
在setting.py中,注册app。即在INSTALLED_APPS列表中添加一个元素’fuck’,注意后面那个逗号不要忘了写。由于我们默认使用的是sqlite3数据库,所以DATABASES列表就不用修改了。
接着就要修改这个app的模型了
class UserInfo(models.Model):
user = models.CharField(max_length=32)
pwd = models.CharField(max_length=32)
在model.py中添加以上字段。
意思就是在UserInfo表中创建了两个字段,用来保存user 和pwd
这里就是说用Django自带的ORM框架去操作数据库。
在命令行中执行如下两条命令
python manage.py makemigrations
python manage.py migrate
这样数据库中的表段字段啥的就弄出来了,然后处理视图函数的业务逻辑,修改view.py
在POST请求的判断条件下,先将用户输入的数据入库,然后再从库中取出。models.UserInfo.objects.create(user=username,pwd=password)
user_list = models.UserInfo.objects.all()
之前定义的值就可以删掉了。运行之,就ok了,这样django的东西我们基本都接触一遍了,然后就是扣细节了,熟能生巧。

回忆一下今天学的东西,首先第一个是 接收用户发送的数据,第二个就是向用户返回动态页面,第三个就是操作数据库。大概就是这样。

0 0
原创粉丝点击