使用karloop开发一个媒体网站的demo

原创 2015年07月08日 23:47:45

大家好,今天为大家介绍一款非常轻量级的的web开发框架,karloop框架。使用python开发

首先我们下载karloop源码进行安装。

源码地址

下载成功后解压,进入解压后的路径,进入终端,运行命令:sudo python setup.py install

如果是window系统,则打开cmd,运行:python setup.py install

我们按照如下路径创建一个项目:

├── base.py
├── config.py
├── handlers
│   ├── __init__.py
│   ├── handlers.py
│   └── pages.py
├── index.py
├── static
│   ├── js
│   │   ├── jquery-1.11.3.js
│   │   └── request.js
│   └── media
│       ├── 1.mp3
│       ├── 1.mp4
│       ├── 2.mp3
│       ├── 3.mp3
│       ├── 4.mp3
│       └── 5.mp3
└── template
    ├── main.html
    └── media_list.html

首先我们来写一个base.py,所有的handler都可以继承,代码如下:

# coding=utf-8

__author__ = 'karl'


import json
from karloop.KarlBaseResponse import BaseResponse


class BaseHandler(BaseResponse):
    def response_as_json(self, body):
        self.set_header('application/json; charset="utf-8"')
        response_data = json.dumps(body)
        return self.response(response_data)
然后写config.py,代码如下:

# coding=utf-8

__author__ = 'karl'


import os


settings = {
    "static": os.path.join(os.path.dirname(__file__), "static/"),
    "template": os.path.join(os.path.dirname(__file__), "template/"),
    "cookie_code": "85701729"
}

再来个index.py

# coding=utf-8

__author__ = 'karl'


from config import settings
from karloop.KarlBaseApplication import BaseApplication
from handlers.pages import MainPage, MediaPage
from handlers.handlers import ListAllMediaHandler
from karloop.parse_command import parse_command_line


handlers = {
    "/main": MainPage,
    "/media": ListAllMediaHandler,
    "/media_page": MediaPage
}


class MediaWebApplication(BaseApplication):
    def __init__(self):
        super(MediaWebApplication, self).__init__(
            handlers=handlers,
            settings=settings
        )


if __name__ == '__main__':
    media_web_application = MediaWebApplication()
    parse_command_line(application=media_web_application, default=8888)
    media_web_application.run()

上handlers.py的代码:

# coding=utf-8

__author__ = 'karl'


from base import BaseHandler


class ListAllMediaHandler(BaseHandler):
    def get(self):
        extension = self.get_argument("extension", "")
        if not extension:
            return self.response_as_json(
                {
                    "error": "no valid parameter"
                }
            )
        extension = extension.lower()
        media_dict = {
            "mp3": ["1.mp3", "2.mp3", "3.mp3", "4.mp3", "5.mp3"],
            "mp4": ["1.mp4", "2.mp4", "3.mp4"]
        }
        if extension not in media_dict.keys():
            return self.response_as_json(
                {
                    "error": "no data"
                }
            )
        response_data = media_dict[extension]
        return self.response_as_json(response_data)
pages.py的代码
# coding=utf-8

__author__ = 'karl'


from karloop.KarlBaseResponse import BaseResponse


class MainPage(BaseResponse):
    def get(self):
        dictionary = {
            "title": "Main Page"
        }
        main_string = "Welcome!"
        test_list = ["This is a demo.", "Developed use karloop."]
        return self.render(
            "main.html",
            {
                "test_dic": dictionary,
                "test_string": main_string,
                "test_list": test_list
            }
        )


class MediaPage(BaseResponse):
    def get(self):
        return self.render("media_list.html")
整个项目的python 代码就这些,总体很简单,毕竟只是一个demo吗,项目的代码下载地址:点击

一个人如何完成一整个网站的开发(推荐好文,看完绝对让你回味无穷)

一个正规的网站开发,理论上需要一个团队的配合,各自发挥自己的长处,网站需求分析、原型设计、效果图、切图、前台美工、后台代码、算法设计、数据库设计、服务器配置等等一系列的事情。  一个人想面面俱到这...
  • u014326381
  • u014326381
  • 2015年08月22日 20:44
  • 7558

权限Demo

目的 现在我有一个管理商品、订单的页面。当用户点击某个超链接时,过滤器会检测该用户是否有权限! 需求分析 按照面向对象的思想,我们至少应该有权限(Privilege)和用...
  • qq_36503884
  • qq_36503884
  • 2017年05月25日 15:11
  • 541

国外最好的人工智能媒体和技术博客TOP5

NBA小牛队老板库班曾经说过,未来世界首个万亿美元富翁,必将是一个高级人工智能系统加持的“超人”。而IDC的报告显示,人工智能市场正以惊人的速度增长,从2016年的80亿美元,增长至2020年的470...
  • qq_35409640
  • qq_35409640
  • 2017年05月17日 22:18
  • 2937

国外iOSDemo 类似国内CocoaChina

1.https://www.cocoacontrols.com
  • Lz_MobileInternet
  • Lz_MobileInternet
  • 2016年08月02日 17:36
  • 408

一款响应式的网站Demo

本作品原始灵感来源慕课网实战视频,如果大家有需要可以star我的GitHub,里面还有许多实战的源码,之后也会不断更新。 接下来记录一些编程当中的重难点 viewport视口对于PC端: 视口...
  • Chenkaixin0512
  • Chenkaixin0512
  • 2017年09月02日 10:43
  • 304

HTML中各种互联网媒体类型(MIME)汇总

MIME type的缩写为(Multipurpose Internet Mail Extensions)代表互联网媒体类型(Internet media type),MIME使用一个简单的字符串组成,...
  • u011240067
  • u011240067
  • 2016年06月17日 20:59
  • 550

dlna(Upnp媒体服务器)开发

随着移动互联网潮流,多设备互动逐渐走入人们生活。比如,手机QQ和PC之间的文件共享,手机可以观看PC上的视频,智能路由器等。而相关的尝试在很久以前就开始了,比如Upnp和dlna。dlna是一堆业界大...
  • baihacker
  • baihacker
  • 2014年07月09日 18:27
  • 6739

Java媒体框架(JMF)

注:本文来自百度百科 JMF   Java术语   术语名称:Java媒体框架(JMF)   术语解释:该核心框架支持不同媒体(如:音频输出和视频输出)间的时钟同步。它是一个标准的扩展框架,...
  • zzq19860626
  • zzq19860626
  • 2013年08月23日 13:55
  • 797

JavaWeb设计及开发(Demo)实践

本地搭建dubbo实例- http://blog.csdn.net/daochuwenziyao/article/details/54708101 activeMQ在文件上传的应用- http://b...
  • ShareUs
  • ShareUs
  • 2017年02月08日 15:03
  • 1342

如何查看一个网站用的是不是thinkphp框架

虽然说框架,应用目录,缓存目录都可以放在网站根目录外。但是不是用thinkphp开发的,还是有窍门: 识别Thinkphp的指纹:4e5e5d7364f443e28fbf0d3ae744a59a ...
  • gongpeng1966
  • gongpeng1966
  • 2016年10月23日 21:55
  • 1705
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用karloop开发一个媒体网站的demo
举报原因:
原因补充:

(最多只允许输入30个字)