专栏首页若是烟花七日Python之路--第八天

七日Python之路--第八天

说实话七天学完Python,确实有些难度。O(∩_∩)O哈哈~ 七天只是约数。

今天学的东西比较杂乱,看了些Django的model和view,早晨还看了一点socket编程方面,刚才还看了些sqlite3的一下东西。下面分开来写下吧。

(一)SQLite3

Ubuntu下面安装

dizzy@dizzy-pc:~$ sudo apt-get install sqlite3

SQLite3使用还是比较简单的,一个数据库文件就能搞定。

打开数据库:

dizzy@dizzy-pc:~/Python/django_project/form_test$ sqlite3 db.sqlite3
SQLite version 3.7.9 2011-11-01 00:52:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

然后就可操作当前打开的数据库了:

sqlite> .tables  #查看所有数据库表,相当于MySQL的show tables;
auth_group                  auth_user_user_permissions
auth_group_permissions      blog_user                 
auth_permission             django_admin_log          
auth_user                   django_content_type       
auth_user_groups            django_session

还有一些通用的SQL语句:

sqlite> select * from blog_user;
1|admin|upload/python_fn.vim
sqlite>

sqlite> .schema table_name
#查看表结构

#输入 .help 查看更多帮助 !!!

就说这么多吧。SQLite3在手机等嵌入式中使用的比较多,小巧简单。

(二)Python的socket编程。

需要使用 import socket. socket编程多是C/S架构。

下面简单的例子。

#server.py

#!/usr/bin/python
#coding=utf-8

import socket
#创建socket对象,使用IPV4,TCP协议
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#将socket绑定到IP地址及端口。tuple元组类型,一个参数
socket.bind(('127.0.0.1',9999))
#设置监听,并设置最大监听数
socket.listen(10)
#等待请求,返回请求者的连接对象和地址元组(IP:PORT)。
conn,addr = socket.accept()
#获取请求者发送的数据
buff = conn.recv(1024)
print buff
#client.py

#!/usr/bin/python
#coding=utf-8

import socket
#创建socket对象
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#连接服务器
sock.connect(('127.0.0.1',9999))
#向服务器发送数据
sock.send(str(raw_input('input msg.')))

当然这是很简单的例子,要学习的东西还有很多...... 以后在研究socket.....


--2014年07月28日19:46:38

(三)Django相关
(1)Cookies

在Response.COOKIES。是Python的一个标准字典型。可以将服务器的K-V数据进行保存。

cookie的设置:

def login(req):
    if req.method == 'POST':
        form = UserForm(req.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            users = User.objects.filter(username__exact=username, password__exact=password)
            if users:
                resp = HttpResponseRedirect('/blog/index/')
                #使用response.set_cookie(key,value,timeout)
                resp.set_cookie('username',username,60*60)
                return resp
            else:
                return HttpResponseRedirect('/blog/login/')
    else:
        form = UserForm()
    return render_to_response('login.html',{'form':form})

cookie的使用与读取:

def index(req):
    #使用request.COOKIES.get(key)获取value的值
    username = req.COOKIES.get('username')
    return render_to_response('index.html',{'username':username})

cookie的删除:

def logout(req):
    resp = HttpResponse('logout')
    #使用response.delete_cookie(key),删除cookie
    resp.delete_cookie('username')
    return resp
(2)session

为了数据的安全,有时需要将一些与用户有关的信息保存到服务器上。request.session

session的创建与使用:

def login(req):
    if req.method == 'POST':
        form = UserForm(req.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            users = User.objects.filter(username__exact=username, password__exact=password)
            if users:
                resp = HttpResponseRedirect('/blog/index/')
                resp.set_cookie('username',username,60*60)
                #使用 request.session[key]=value 来对session进行赋值
                req.session['username'] = username
                return resp
            else:
                return HttpResponseRedirect('/blog/login/')
    else:
        form = UserForm()
    return render_to_response('login.html',{'form':form})

session的读取:

def index(req):
    #username = req.COOKIES.get('username')
    #使用 request.session.get(key) 来获取value
    username = req.session.get('username')
    return render_to_response('index.html',{'username':username})

session的删除:

def logout(req):
    resp = HttpResponse('logout')
    #resp.delete_cookie('username')
    #直接通过删除命令 del 进行删除。
    del req.session['username']
    return resp
(3)auth

User的使用。

 from django.contrib.auth.models import User

User的创建:

#在Python 交互 shell 中实现。至少需要两个参数:username, password
>>> User.objects.create_user(username='aaa',password='aaa')

劳逸结合才是王道! 可惜还是没有什么困意 。。。。。 Org......

--2014年07月29日01:55:45

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JavaScript 学习(2)

    参考: http://www.w3cschool.cc/js/js-window.html

    lpe234
  • python基础 -- 简单实现HTTP协议

    lpe234
  • python提高--running-python-code-contained-in-a-strin

    http://stackoverflow.com/questions/701802/how-do-i-execute-a-string-containing-p...

    lpe234
  • Node.js 使用 express-jwt 解析 JWT

    JWT 全称 JSON Web Token,是代替传统 session 认证的解决方案。其原理是服务端生成一个包含用户唯一标识的 JSON 对象,颁发给客户端。...

    张凯强
  • 常见的Mybatis面试题详细讲解大全

    2、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?

    Java学习
  • 2020年,MyBatis常见面试题总结

    Mybatis 技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用 Mybatis 的文章,...

    Java码农那些事
  • 【39期】Mybatis面试18问,你想知道的都在这里了!

    答:${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql....

    良月柒
  • Comcast、ricardo.ch、PingCAP、Prowise和蒙特利尔市通过Kubernetes更上一层楼

    Kubernetes赋能Comcast、ricardo.ch、PingCAP、Prowise和蒙特利尔市,在不增加运营团队的情况下扩张规模,并将生产率提高了15...

    CNCF
  • 百度李彦宏王海峰、阿里王坚、微软沈向洋,谁会成为新院士?

    五一假期前夕,中国工程院官网发布了2019年院士增选候选人提名名单,百度的李彦宏、王海峰,微软的沈向洋,阿里的王坚,还有比亚迪的王传福纷纷上榜。

    镁客网
  • 发布订阅模式,在工作中它的能量超乎你的想象

    其实在早期还是用jq开发的时代,有很多地方,我们都会出现发布订阅的影子,例如有trigger和on方法

    桃翁

扫码关注云+社区

领取腾讯云代金券