django、flask、tornado区别

Django登录

def login(request):
    if request.method == 'GET':
    	goods = Good.objects.filter(id__gt=1, id__lte=6)
        return render(request, 'login.html', {'goods': goods})
    elif request.method == 'POST':
        # 登录
        # 接受客户端发送的数据
        username = request.POST.get('username')
        password = request.POST.get('password')

        # 验证用户名以及密码
        users = UserModel.objects.filter(username=username, password=password)
        if users.exists():
            # 验证成功
            res = redirect(reverse('index'))

            # coikie
            #   1、cookie是储存在客户端
            #   2、cookie一般不跨域,不能夸浏览器
            #   3、cookie一般是小于4kb的文本
            #   4、cookie是有服务器设置的,cookie内容一般和当前用户相关
            # res.set_cookie('userid', users.first().id)

            # cookie过期时间
            #   1、默认过期时间为浏览器会话时间(浏览器关闭会删除)
            #   2、expires 设置一个过期时间,datetime
            #   3、max_age:设置从当前时间开始进过的秒数
            # res.set_cookie('userid', users.first().id, max_age=20)
            # d = datetime.datetime(2030, 1, 2)
            # res.set_cookie('userid', users.first().id, expires=d)

            # session
            # 设置session
            request.session['userid'] = users.first().id
            # 设置session过期时间
            request.session.set_expiry(86400)

            # 进入首页
            # return redirect(reverse('index'))
            return res # 相当于上面那句
        return render(request, 'login.html')

ps:

dango、flask、tornado一些区别**

django return方式

  1. render(request, ‘login.html’, {‘goods’: goods})只是可以页面渲染,传入数据给模板
  2. redirect(reverse(‘index’)) 只是做页面跳转,不能带数据
  3. HttpResponse(‘ok’) 返回一个ok的页面
  4. return JsonResponse({‘msg’: ‘修改成功’, ‘code’: 1, ‘date’: data, }) 前后端分离返回json数据

flsk return方式

1.return render_template('index.html', num=num, now=now)  相当于django中render
2.return redirect(url_for('admin.admin_category'))   相当于django中的redirect 跳转页面
3. return 'ok'   相当于django中的HttpResponse

tornado return方式

	self.write('注册失败')
	self.render('register.html', username=usernaem)
	self.redirect(self.reverse_url('login'))
# tornado 注册
class RegisterHandler(tornado.web.RequestHandler):
    def get(self):
     	username = self.get_body_argument('username')
        # self.render('register.html')
        self.render('register.html', username=usernaem)

    def post(self):
    	self.get_body_argument
        username = self.get_argument('username')
        password = self.get_argument('password')
        sex = self.get_argument('sex')

        # 检测用户名是否是否已经存在
        user = session.query(Person).filter_by(name=username).first()
        if user:
            self.write('该用户名已注册')
        else:
            # 注册
            person = Person()
            person.name = username
            person.password = my_md5(password)
            person.sex = True if sex == 'man' else False
            try:
                session.add(person)
                session.commit()
            except:
                session.rollback()
                session.flush()
                self.write('注册失败')
            else:
                # 注册成功
                # 跳转到登录界面
                self.redirect(self.reverse_url('login'))
  1. 接受前端返回的数据 (post)
    Django 用 username = request.POST.get(‘username’)
    flask 用 username = request.form.get(‘username’)
    Tornado 用username = self.get_argument(‘username’) # get_body_argument

  2. 得到数据库的数据

    Django 用 
    	注意用get没找到数据会报错,但是filter没找到不会报错
    	user = user.objects.get(id=1) # filter、all
    
    flask 用 
    	 user = user.query.gey(1)  # get 只需要将id填进去即可
     	 user = user.query.filter(User.id==1)  #  filter 注意2个等号
     	 user = user.query.filter_by(id=1)  #  filter_by 不需要表名,一个等号
    
    Tornado 用 
    	基本和flask一致,但是其query需要带表名,
    	user = session.query(Person).filter_by(name=username)
    
  3. 保存至数据库

     1、Django 
     		person = Person()
        	person.name = username
    		user.save()  保存即可
    	
    2、flask 用  这个用db.session
    	person = Person()
       	person.name = username
       	try:
            db.session.add(person)  # 成功提交
            db.session.commit()   # 保存
        except:
            db.session.rollback()  #  失败回滚
            db.session.flush()   # 刷新缓冲区
            
    3、Tornado   这个用session
    	person = Person()
      	person.name = username
      	try:
           session.add(person)
           session.commit()
       except:
           session.rollback()
           session.flush()
           self.write('注册失败')
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值