tornado pyquery bootstrap简单的内部点餐用(增加:从html文本中获取所需外卖商品的方法的)

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import os
import time
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import torndb
import random
import sys

from tornado.escape import json_encode
from tornado.options import define,options

define("port",default=9000,help="run on the given port",type=int)
define("mysql_host",default="127.0.0.1:3306",help="database host")
define("mysql_database",default="diancan",help="diancanle database name")
define("mysql_user",default="root",help="diancanle database user")
define("mysql_password",default="123456",help="diancanle database password")


class Application(tornado.web.Application):
    def __init__(self):
        handlers = [
            (r"/",ShopListHandler),#外卖店列表页面
            (r"/auth/register",AuthRegisterHandler),#注册页面
            (r"/auth/login",AuthLoginHandler),#登录叶面
            (r"/food_list/(\d+)",FoodListHandler),#选择外卖店后的进入的该外卖店的商品列表页面
            (r"/FoodListSubmitHandler",FoodListSubmitHandler),#处理顾客选择某个商品后的提交
            (r"/admin",AdminHanlder),#管理员对外卖店和商品管理的页面
            (r"/admin/add_shop_info",AdminAddShopHandler),(r"/admin/add_shop_good",AdminAddShopGoodHandler),(r"/admin/start_diancan",AdminStartDiancanInfoHandler),(r"/admin/get_diancaninfo",AdminGetDiancanInfoHandler),(r"/admin/stop_diancan",AdminStopDiancanHandler),(r"/admin/search_order_his",AdminSearchOrderHisHandler),]
        settings = dict(
            template_path=os.path.join(os.path.dirname(__file__),"template"),static_path=os.path.join(os.path.dirname(__file__),"static"),# xsrf_cookies=True,cookie_secret="thisisdiancanle",login_url="/auth/login",debug=True
        )
        tornado.web.Application.__init__(self,handlers,**settings)


class BaseHandler(tornado.web.RequestHandler):
    def get_current_user(self):
        return self.get_secure_cookie("user_id")


class AuthRegisterHandler(BaseHandler):
    def get(self):
        self.render("register.html",warn_info="")

    def post(self):
        user_mail = self.get_argument("user_mail")
        user_passwd = self.get_argument("user_passwd")
        db = torndb.Connection('127.0.0.1','dinning','root','123456')
        select_sql = "SELECT * FROM user WHERE USER_NAME = '%s' and user_passwd = '%s'"%(user_mail,user_passwd)
        query_resutl = db.get(select_sql)
        if query_resutl is not None:
            self.render("register.html",warn_info="请填写正确的信息")
            return
        sql_add_new_user = "insert into user(user_name,user_passwd,type) VALUE('%s','%s',%d)"%(user_mail,1)
        db.execute(sql_add_new_user)
        self.set_secure_cookie("user_id",user_mail)
        self.redirect("/")

class AuthLoginHandler(BaseHandler):
    def get(self):
        self.render("login.html",warn_info="")

    def post(self):
        user_mail = self.get_argument("user_mail")
        user_passwd = self.get_argument("user_passwd")
        conn = torndb.Connection('127.0.0.1','123456')
        select_sql = "select * from user where user_name = '%s' and user_passwd = '%s'"%(user_mail,user_passwd)
        query_result = conn.get(select_sql)
        if query_result is None:
            self.render("login.html",warn_info="请输入正确的信息")
            return ;
        self.set_secure_cookie("user_id",user_mail)
        self.redirect('/')


class ShopListHandler(BaseHandler):
    @tornado.web.authenticated
    def get(self):
        recommend_food_cur_list = [u"西红柿炒蛋",u"春笋炒肉",u"红烧狮子头"];
        #推荐商店的名称、商店热门商品、总销量

        # recommend_shop_list = [
        #     ("杭州老娘舅","鱼香肉丝","1000","/food_list/1000"),#     ("麦当劳","汉堡","900","/food_list/1001"),#     ("五号便当","土豆丝","800","/food_list/1002"),#     ("德克士","可乐","901","/food_list/1003"),#     ("味捷外卖","红烧狮子头","1002","/food_list/1004")
        # ]
        conn = torndb.Connection('127.0.0.1','123456')
        select_sql = "select shop_id,shop_name,shop_image from shop"
        select_result = conn.query(select_sql)
        recommend_shop_list = [];

        for item in select_result:
            recommend_shop_list.append((item.shop_name,"/food_list/" + str(item.shop_id),item.shop_image))

        # recommend_shop_list = [
        #     ("杭州老娘舅","/food_list/1004")
        # ]
        self.render("shop_list.html",# recommend_shop_name_cur="味捷外卖",# recommend_shop_descrition_cur="中国餐饮外卖行业领导者",# recommend_food_cur_list=recommend_food_cur_list,recommend_shop_list=recommend_shop_list
                    # recommend_shop_name=u"杭州老娘舅",# hot_sell_food=u"杭州老娘舅",# hot_sell_sum=1009
        )


class FoodListHandler(BaseHandler):
    @tornado.web.authenticated
    def get(self,shop_id):
        conn = torndb.Connection('127.0.0.1','123456')
        select_shop_name_sql = "select distinct shop_name from shop where shop_id = '%s'" %(shop_id);
        select_shop_name_result = conn.get(select_shop_name_sql);
        try:
            shop_name_temp = select_shop_name_result['shop_name']
        except:
            self.redirect('/')
            return

        select_sql = "select food_id,food_name,food_img from shop_food where shop_id = '%s'"%(shop_id)
        print select_sql
        select_result = conn.query(select_sql)
        food_list = []
        for item in select_result:
            food_list.append((item.food_name,item.food_id,item.food_img))
        self.render("food_list.html",food_page_title=shop_name_temp,food_list=food_list)

    # def post(self):
    #     self.write("test")
    #     # food_name = self.get_argument("food_name")
    #     # self.write(food_name)

class FoodListSubmitHandler(BaseHandler):
    @tornado.web.authenticated
    def post(self):
        status_success = {
            "status":True,"value":1
        }   
        status_error = {
            "status":False,"value":2
        }
        status_shop_error = {
            "status":False,"value":3,"shop_name_should":""
        }
        shop_name = self.get_argument('shop_name')
        food_name = self.get_argument('food_name')
        food_id = self.get_argument('food_id')
        user_name = self.get_secure_cookie("user_id")
        
        conn = torndb.Connection('127.0.0.1','123456')	
        select_user_cur_order="select count(*) as num from order_cur where user_name = '%s' " % user_name
        select_user_cur_order_result = conn.get(select_user_cur_order)
        print select_user_cur_order_result

        select_shop_name = "select shop_name from order_cur where user_name = 'test' "  
        select_shop_name_result = conn.get(select_shop_name)
        try:
            shop_name_should = select_shop_name_result["shop_name"]
        except:
            status_error["value"]=4
            self.write(json_encode(status_error))
            return

        if shop_name_should != shop_name:
        	status_shop_error["shop_name_should"] = shop_name_should
        	self.write(json_encode(status_shop_error))
        	return	

        if select_user_cur_order_result["num"] == 0:
			insert_cur_user_order_cur = "insert into order_cur(order_id,user_name,shop_name) value ('%s','%s')"% \
               (str(random.randint(1,1000000)),shop_name);
			print insert_cur_user_order_cur
			try:
				conn.execute(insert_cur_user_order_cur)
			except:
				self.write(json_encode(status_error))
				return
        else:
			update_cur_user_order_cur = "update order_cur set food_name = '%s' where user_name = '%s'" %(food_name,user_name)
			print update_cur_user_order_cur			
			try:
				conn.execute(update_cur_user_order_cur)
			except:
				self.write(json_encode(status_error))
				return
        self.write(json_encode(status_success))


class AdminHanlder(BaseHandler):
    @tornado.web.authenticated
    def get(self):
        conn = torndb.Connection('127.0.0.1','123456')
        select_shop = "select distinct shop_name FROM shop"
        list = conn.query(select_shop)
        shop_list = []
        shop_list_search = []
        for item in list:
            shop_list.append(item.shop_name)
            shop_list_search.append(item.shop_name)
        shop_list_search.append("全部")

        user_list_search = []
        select_user_sql = "select user_name from user"
        select_user_list = conn.query(select_user_sql)

        for user_item in select_user_list:
            user_list_search.append(user_item.user_name)

        user_list_search.append("全部")

        self.render("admin.html",shop_list=shop_list,order_list=[],shop_list_search=shop_list_search,user_list_search=user_list_search)


class AdminAddShopHandler(BaseHandler):
    def post(self):
        status_success = {
            "status":True,"value":2
        }
        shop_name = self.get_argument('shop_name')
        shop_addr = self.get_argument('shop_addr')
        conn = torndb.Connection('127.0.0.1','123456')
        add_shop_sql = "insert into shop(shop_name,shop_addr) VALUE ('%s','%s')"%(shop_name,shop_addr)
        try:
            conn.execute(add_shop_sql)
        except:
            self.write(json_encode(status_error))
            return     
        self.write(json_encode(status_success))


class AdminAddShopGoodHandler(BaseHandler):
    def post(self):
    	status_success = {
    	    "status":True,"value":1
    	}
    	status_error = {
            "status":False,"value":2
    	}        
    	shop_name = self.get_argument('shop_name')
    	shop_food = self.get_argument('shop_food')
    	conn = torndb.Connection('127.0.0.1','123456')


        get_shop_addr = conn.get("select shop_id,shop_addr from shop where shop_name = '%s'" %(shop_name))
    	add_shop_sql = "insert into shop_food(shop_id,shop_addr,food_name) VALUE \
            ('%d','%s')"%(get_shop_addr["shop_id"],get_shop_addr['shop_addr'],shop_food)
    	print add_shop_sql
    	try:
            conn.execute(add_shop_sql)
    	except:
             self.write(json_encode(status_error))
             return
        self.write(json_encode(status_success))


class AdminStartDiancanInfoHandler(BaseHandler):
    def post(self):
        status_success = {
            "status":True,"value":1
        }
        status_error = {
            "status":False,"value":2
        }        
        try:
            shop_name = self.get_argument('shop_name')    
        except:
            self.write(json_encode(status_error))
            print "here is called"
            return

        conn = torndb.Connection('127.0.0.1','123456')
        add_order_cur_sql = "insert into order_cur(order_id,shop_name) VALUE \
            ('%s','%s')"%(0,"test","test_food",shop_name)
        print add_order_cur_sql
        try:
            conn.execute(add_order_cur_sql)
        except:
             self.write(json_encode(status_error))
             return
        self.write(json_encode(status_success))

class AdminGetDiancanInfoHandler(BaseHandler):
    def post(self):
        status_success = {
            "status":True,"shop_name":"","result_list":[]
        }
        status_error = {
            "status":False,"result_list":[]
        }
# {"user_name":"user_name1","food_name":"food_name1"},# {"user_name":"user_name2","food_name":"food_name2"},conn = torndb.Connection('127.0.0.1','123456')

        select_order_cur_shop_name_sql = "select distinct shop_name from order_cur where user_name != 'test'"
        select_order_cur_shop_name_result = conn.get(select_order_cur_shop_name_sql)
        try:
            shop_name = select_order_cur_shop_name_result["shop_name"]
        except:
            print "order cur is empty"
            return;
        status_success["shop_name"] = shop_name
        status_error["shop_name"] = shop_name
        select_order_cur = "select user_name,food_name from order_cur where user_name != 'test'"
        select_order_list = conn.query(select_order_cur)
        for item_order in select_order_list:
            status_success["result_list"].append(item_order)

        if len(status_success["result_list"]) == 0:
            self.write(status_error)
            return
        self.write(status_success)


class AdminStopDiancanHandler(BaseHandler):
    def post(self):
        # shop_name = self.get_argument('shop_name')
        # shop_addr = self.get_argument('shop_addr')
        conn = torndb.Connection('127.0.0.1','123456')
        order_cur_select = "select order_id,shop_name from order_cur where user_name != 'test'"
        order_cur_list = conn.query(order_cur_select)
        
        for order_cur_item in order_cur_list: 
            order_his_insert = "insert into order_his(order_id,shop_name) value('%s','%s')"% \
                (order_cur_item.order_id,order_cur_item.user_name,order_cur_item.food_name,order_cur_item.shop_name)  
            print order_his_insert
            conn.execute(order_his_insert)

        delete_order_cur = "delete from order_cur";
        conn.execute(delete_order_cur);

        self.redirect('/admin')

class AdminSearchOrderHisHandler(BaseHandler):
    def post(self):
        pass
        # result = {
        #     "errorid":"0"
        # }
        # shop_name = self.get_argument("shop_name")
        # user_name = self.get_argument("user_name")
        # search_date_start = self.get_argument("start_date")
        # search_date_end = self.get_argument("end_date")
        # print shop_name,search_date_start,search_date_end
        #
        # search_sql = "SELECT user_name,order_time FROM order_his where user_name = '%s'" \
        #              " and shop_name = '%s' and order_time > '%s' and order_time < '%s'" %\
        #              (user_name,search_date_end);
        # conn = torndb.Connection('127.0.0.1','123456')
        # conn.get(search_sql);
        #
        # self.write(json_encode(result))

if __name__ == '__main__':
    reload(sys)
    sys.setdefaultencoding('utf8')
    tornado.options.parse_command_line()
    http_server = tornado.httpserver.HTTPServer(Application())
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Python中的函数(二) 在上一篇文章中提到了Python中函数的定义和使用,在这篇文章里我们来讨论下关于函数的一些更深的话题。在学习C语言函数的时候,遇到的问题主要有形参实参的区别、参数的传递和改变、变量的作用域。同样在Python中,关于对函数的理解和使用也存在这些问题。下面来逐一讲解。一.函
Python中的字符串 可能大多数人在学习C语言的时候,最先接触的数据类型就是字符串,因为大多教程都是以&quot;Hello world&quot;这个程序作为入门程序,这个程序中要打印的&quot;Hello world&quot;就是字符串。如果你做过自然语言处理方面的研究,并且用Python
Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程。下面就来了解一下如何在Python中进行对象编程。一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法。 类是对现实世界中一些事物的封装,
Python面向对象编程(二) 在前面一篇文章中谈到了类的基本定义和使用方法,这只体现了面向对象编程的三大特点之一:封装。下面就来了解一下另外两大特征:继承和多态。 在Python中,如果需要的话,可以让一个类去继承一个类,被继承的类称为父类或者超类、也可以称作基类,继承的类称为子类。并且Pytho
Python中的函数(一) 接触过C语言的朋友对函数这个词肯定非常熟悉,无论在哪门编程语言当中,函数(当然在某些语言里称作方法,意义是相同的)都扮演着至关重要的角色。今天就来了解一下Python中的函数用法。一.函数的定义 在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明
在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方便和顺手,就是web.py。它由一名黑客所创建,但是不幸的是这位创建者于2013年自杀了。据说现在由
将Sublime Text 2搭建成一个好用的IDE 说起编辑器,可能大部分人要推荐的是Vim和Emacs,本人用过Vim,功能确实强大,但是不是很习惯,之前一直有朋友推荐SUblime Text 2这款编辑器,然后这段时间就试了一下,就深深地喜欢上这款编辑器了...
Python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt这个函数,必须用语句&quot;#include&lt;math.h&gt;&quot;引入math.h这个头文件,否则是无法正常进行调用的。那么在Python中,如果要引用一些内置的函数,该怎么处理呢?在Python中
Python的基础语法 在对Python有了基础的认识之后,下面来了解一下Python的基础语法,看看它和C语言、java之间的基础语法差异。一.变量、表达式和语句 Python中的语句也称作命令,比如print &quot;hello python&quot;这就是一条语句。 表达式,顾名思义,是
Eclipse+PyDevʽjango+Mysql搭建Python web开发环境 Python的web框架有很多,目前主流的有Django、Tornado、Web.py等,最流行的要属Django了,也是被大家最看好的框架之一。下面就来讲讲如何搭建Django的开发环境。一.准备工作 需要下载的
在windows下安装配置Ulipad 今天推荐一款轻便的文本编辑器Ulipad,用来写一些小的Python脚本非常方便。 Ulipad下载地址: https://github.com/limodou/ulipad http://files.cnblogs.com/dolphin0520/u...
Python中的函数(三) 在前面两篇文章中已经探讨了函数的一些相关用法,下面一起来了解一下函数参数类型的问题。在C语言中,调用函数时必须依照函数定义时的参数个数以及类型来传递参数,否则将会发生错误,这个是严格进行规定的。然而在Python中函数参数定义和传递的方式相比而言就灵活多了。一.函数参数的
在Notepad++中搭配Python开发环境 Python在最近几年一度成为最流行的语言之一,不仅仅是因为它简洁明了,更在于它的功能之强大。它不仅能够完成一般脚本语言所能做的事情,还能很方便快捷地进行大规模的项目开发。在学习Python之前我们来看一下Python的历史由来,&quot;Pytho
Python中的条件选择和循环语句 同C语言、Java一样,Python中也存在条件选择和循环语句,其风格和C语言、java的很类似,但是在写法和用法上还是有一些区别。今天就让我们一起来了解一下。一.条件选择语句 Python中条件选择语句的关键字为:if 、elif 、else这三个。其基本形式如
关于raw_input( )和sys.stdin.readline( )的区别 之前一直认为用raw_input( )和sys.stdin.readline( )来获取输入的效果完全相同,但是最近在写程序时有类似这样一段代码:import sysline = sys.stdin.readline()
初识Python 跟学习所有的编程语言一样,首先得了解这门语言的编程风格和最基础的语法。下面就让我们一起来了解一下Python的编程风格。1.逻辑行与物理行 在Python中有逻辑行和物理行这个概念,物理行是指在编辑器中实际看到的一行,逻辑行是指一条Python语句。在Python中提倡一个物理行只
当我们的代码是有访问网络相关的操作时,比如http请求或者访问远程数据库,经常可能会发生一些错误,有些错误可能重新去发送请求就会成功,本文分析常见可能需要重试的场景,并最后给出python代码实现。
1.经典迭代器 2.将Sentence中的__iter__改成生成器函数 改成生成器后用法不变,但更加简洁。 3.惰性实现 当列表比较大,占内存较大时,我们可以采用惰性实现,每次只读取一个元素到内存。 或者使用更简洁的生成器表达式 4.yield from itertools模块含有大量生成器函数可
本文介绍简单介绍socket的常用函数,并以python-kafka中的源码socketpair为例,来讲解python socket的运用
python实践中经常出现编码相关的异常,大多网上找资料而没有理解原理,导致一次次重复错误。本文对常用Unicode、UTF-8、GB2312编码的原理进行介绍,接着介绍了python字符类型unicode和str以及常见编解码错误UnicodeEncodeError和UnicodeDEcodeEr