完整project链接点击打开链接

上一篇中我们使用了Javascript和Html5实现了弹球游戏。而在本文中我们希望以其为基础实现游戏站点,可以实现用户的注冊登录。游戏成绩记录,排名显示。微博分享等功能。

终于效果:

2. 站点的搭建和server的搭建

2.1 站点总体构成

站点的搭建我使用django框架。

2.1.1 数据库设计

User:

Field

Type

Null

Key

Default

Description

Name

Varchar(50)

No

Primary

用户ID

Password

Varchar(50)

No

用户password

BestScore

Integer

No

0

用户最高分

Name

Varchar(20)

No

法人姓名

相应的Models;

class Player(models.Model):
name = models.CharField(max_length=50, primary_key =True)
password = models.CharField(max_length=50)
bestScore = models.PositiveIntegerField()
def __unicode__(self):
return u'%s %s %s %s %s' % (self.name, self.password, self.weibo, self.weboPw, self.bestScore)

2.1.2 站点设计

站点架构图:

URL设置

 (r'^$', views.login),
(r'^index/$', views.index),
(r'^ballgame/$', views.game),
(r'^signup/$', views.signup),
(r'^signresult/$', views.signResult),
(r'^login/$', views.loginResult),
(r'^storeScore/(?P<score>[\d]*)/$', views.storeScore),
(r'^logout/$', views.logout),
(r'^site_media/(?P<path>.*)$','django.views.static.serve',{'document_root': settings.STATIC_PATH}),

相应的Views:

要点:登录控制,登录之后向request中写入session表示已经登录,在受到每一个URL请求时在views中进行推断。假设session中没有这个信息,就返回登录页面。登出则是在request中删除这个session信息。

//登录结果
def loginResult(request):
if request.method == "POST":
username = request.POST["username"]
try:
user = Player.objects.get(name = username)
except ObjectDoesNotExist:
return render_to_response("login.html")
passwd = request.POST["password"]
if passwd != user.password:
return HttpResponseRedirect("/") request.session['user_id'] = user.name;
return HttpResponseRedirect("/index/")
//登录页
def login(request):
if "user_id" in request.session:
return HttpResponseRedirect("/index/")
else:
return render_to_response('login.html')
//注冊页
def signup(request):
return render_to_response('signup.html')
//登出
def logout(request):
try:
del request.session['user_id'] except KeyError:
pass
return render_to_response('login.html')
//index页
def index(request):
//使用request中的session控制登录
if "user_id" in request.session:
res = Player.objects.order_by('-bestScore')[0:9]
user = Player.objects.get(name=request.session["user_id"])
score = user.bestScore
count = 1
ares = Player.objects.order_by('-bestScore')
for p in ares:
if p.name==request.session["user_id"]:
break
else:
count= count+1 return render_to_response('index.html', {"username": request.session["user_id"], "bestPlayer": res, "score": score, "rank": count})
else:
return render_to_response('login.html')
//游戏页
def game(request):
if "user_id" in request.session:
return render_to_response('ballGame.html', {"username": request.session["user_id"]})
else:
return HttpResponseRedirect("")
//注冊结果页
def signResult(request):
if request.method == "POST":
username = request.POST["username"]
try:
existed = Player.objects.get(name = username)
except ObjectDoesNotExist:
passwd = request.POST["password"]
p = Player(name = username, password= passwd, bestScore=1)
p.save()
return render_to_response("signSucceed.html")
return HttpResponseRedirect("/signup/")
//保存得分
def storeScore(request,score):
if 'user_id' in request.session:
userid = request.session['user_id']
try:
user = Player.objects.get(name=userid)
except ObjectDoesNotExist:
return HttpResponseRedirect("")
oldScore = user.bestScore;
print type(oldScore)
print type(score)
score = long(score)
if score > oldScore:
print "yes"
bestScore = score
user.bestScore = score
user.save()
else:
bestScore = oldScore return render_to_response("score.html",{"username":user.name, "thisscore":score, "bestScore": bestScore})
else:
return HttpResponseRedirect("")

2.1.3 server的搭建

本站点选择使用Apacheserver,apacheserver默认不支持python。所以须要载入外部模块。这里选择使用module_wsgi。

配置步骤:

A.从站点上下载编译好的module_wsgi.so,放置到apache安装文件夹/modules文件夹。

在apache安装文件夹/conf/httpd.conf文件里加入下面内容已加载该模块。

LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / "F:/danjo/game/django.wsgi" //设置/url相应文件。 Alias /site_media F:/danjo/game/static //设置/site_media url 所相应文件夹。本站点将全部的静态载入内容放在了该文件夹。 <Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from allow此处为设置对/根文件夹的訪问权限
</Directory> <Directory "F:/danjo/game"> //该文件夹为djangoproject所在文件夹
Order deny,allow
allow from all
</Directory>

在djangoproject文件夹中加入文件。Django.wsgi。

import os
import sys
import django.core.handlers.wsgi
sys.path.append(r'F:/danjo/game')
os.environ['DJANGO_SETTINGS_MODULE'] = 'game.settings'
application = django.core.handlers.wsgi.WSGIHandler()

这样之后就能够在apache中訪问我们的django框架搭建的站点了。

3. 微博功能的实现

微博分享功能须要使用微博API,这里选择使用javascript API。Api的使用须要在微博开放平台注冊应用,并表明站点全部权。

全部须要我们的站点能在外网登录。

所以须要注冊域名,这里我选择使用花生壳动态域名server。并使用了它的免费域名kkopq.xicp.net。

做完以上几步后,实现微博分享就非常easy了。在须要微博的页面加入下面内容:

    <script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=2556191936" type="text/javascript" charset="utf-8"></script>  //这是微博api的库 注意须要加入注冊应用后获得appkey。

定义分享button:

  <p><button class="btn btn-success btn-hg" style="width:200px;height:50px" type="button" id="wb_publish" >share</wb:button></p>
<script>
WB2.anyWhere(function(W){
W.widget.publish({
id : 'wb_publish',
default_text : 'I have gotten {{score}} points in the KKball game! Come to play with me at kkopq.xicp.net![耶][耶][耶]'
});
});
</script>

4.html UI 设计。

网页UI我是用了Flat UI框架。


使用Django框架实现游戏站点搭建的更多相关文章

  1. django框架-Admin管理站点搭建

    在django框架中,admin基本上算是已经写好了的,拿过来进行简单的处理即可以使用的,相对于flask来说已经是相当的便捷了. 在使用中,步骤如下: 1.管理界面本地化:即将英文标题等的变成中文, ...

  2. 潭州课堂25班:Ph201805201 django框架 第一课 环境搭建 (课堂笔记)

    在虚拟机中创建虚拟环 mkvirtualenv -p /usr/bin/python3 djtest mkvirtualenv 是创建命令, -p /usr/bin/python3  是指定在 pyt ...

  3. Python学习笔记_04:Django框架简介

    目录 1 什么是Django? 2 Django框架的开发环境搭建 3 Django操作MySql数据库简介 4 功能强大的Django管理工具应用 1 什么是Django? Django是应用于We ...

  4. django框架初探

    django框架初探 1.web框架介绍 web框架本质是一个socket服务端.每一个端口只能被一个程序监听. web程序分为两个部分: 服务器程序:对socket服务器封装,解析http请求,发送 ...

  5. 手动搭建简易web框架与django框架简介

    目录 纯手写简易web框架 基于wsgiref模块 动静态网页 简单了解jinja2模块 框架请求流程 python主流web框架 django框架 简介 应用app 命令操作django pycha ...

  6. Django 框架搭建入门案例

    1. 什么是 web 框架 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端; # 示例: import socket def handle_re ...

  7. Django框架搭建(windows系统)

    Django框架搭建(windows系统) 一.Django简介 开放源代码的Web应用框架,由Python语言编写,一个大而全的框架. 1.web框架介绍 具体介绍Django之前,必须先介绍WEB ...

  8. 3/16 Django框架 环境搭建

    3/16 Django框架 环境搭建 环境搭建 Python解释器 Python代码通过Python解释器去执行. 编程语言 机器语言---汇编语言(助记符)---高级语言 解释型语言:解释器将代码一 ...

  9. 初识Django框架——环境搭建前你需要了解的几点

    Django是一个开放源代码的Web应用框架,由Python写成. 采用了MVC的框架模式,即模型M,视图V和控制器C. 它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是C ...

随机推荐

  1. 无法定位程序输入点_except_handler4_common于动态链接库msvcrt.dll

    这是由于sp3加载的驱动造成的:只需要将C:\WINDOWS\system32\dwmapi.dll重新命名一下即可以解决. 可以调试程序当系统加载到“c:\Program Files\China M ...

  2. sql 循环分割字符

    DECLARE @Items VARCHAR(1000)='148' --待处理拼接字符串 --开始处理SET @Items=@Items+',' --必须追加“,”否则最后一个无法输出DECLARE ...

  3. Spring Cloud (12) 服务网关-基础

    通过前几篇介绍,已经可以构建一个简单的微服务架构了,如下图: 通过eureka实现服务注册中心以及服务注册发现,通过ribbon或feign实现服务的消费以及负载均衡,通过spring cloud c ...

  4. Mac下CUDA开启及Tensorflow-gpu 1.4 安装

    本文由@ray 出品,转载请注明出处.  文章链接:http://www.cnblogs.com/wolfray/p/8040694.html 在之前的文章中,笔者介绍了在Mac下安装Tensorfl ...

  5. viewpager无线轮播获取网络图片

    首先创建小圆点 小圆点的两个属性一共两个属性另一个跟这个一个样,只不过颜色能让我们区分的 <?xml version="1.0" encoding="utf-8&q ...

  6. java攻城狮之路--复习xml&dom_pull编程

    xml&dom_pull编程: 1.去掉欢迎弹窗界面:在window项的preferences选项中输入“configuration center” 找到这一项然后     把复选框勾去即可. ...

  7. 【译】x86程序员手册06 - 2.4指令格式

    2.4 Instruction Format 指令格式 The information encoded in an 80386 instruction includes a specification ...

  8. Java_Web三大框架之Hibernate+jsp+selvect+HQL注册用户

    Hibernate比SQL语句简单多了,代码冗余少,切方便简洁明了.下面用Hibernate+jsp+selvect+HQL来实现注册用户. 第一步:编写用户实体类和Users2.hbm.xml映射. ...

  9. java网络

    title: java 网络 date: 2017年3月11日11:14:52 1. 复杂的东西就把他封装成对象 概述:(网络就是找到别人) 找到对方的机器,(找到对方的ip地址) 每个机器中有很多进 ...

  10. enote笔记语言(4)(ver0.3)——“5w1h2k”分析法

    章节:“5w1h2k”分析法   what:我想知道某个“关键词(keyword)”(即,词汇.词语,或称单词,可以是概念|专业术语|.......)的定义. why:我想知道事物发生的原因.“why ...