完整工程链接点击打开链接

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

最终效果:

2. 网站的搭建和服务器的搭建

2.1 网站整体构成

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

2.1.1 数据库设计

User:

Field

Type

Null

Key

Default

Description

Name

Varchar(50)

No

Primary

用户ID

Password

Varchar(50)

No

用户密码

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:passreturn 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.bestScorecount = 1ares = Player.objects.order_by('-bestScore')for p in ares:if p.name==request.session["user_id"]:breakelse:count= count+1return 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 = scoreuser.bestScore = scoreuser.save()else:bestScore = oldScorereturn render_to_response("score.html",{"username":user.name, "thisscore":score, "bestScore": bestScore})else:return HttpResponseRedirect("")

2.1.3 服务器的搭建

本网站选择使用Apache服务器,apache服务器默认不支持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 FollowSymLinksAllowOverride NoneOrder deny,allowDeny from allow此处为设置对/根目录的访问权限
</Directory><Directory "F:/danjo/game">  //该目录为django工程所在目录Order deny,allowallow from all
</Directory>

在django工程目录中添加文件。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的使用需要在微博开放平台注册应用,并表明网站所有权。所有需要我们的网站能在外网登录。所以需要注册域名,这里我选择使用花生壳动态域名服务器。并使用了它的免费域名kkopq.xicp.net。

做完以上几步后,实现微博分享就很简单了。在需要微博的页面添加以下内容:

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

定义分享按钮:

  <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. 游戏网站搭建实例:黑色沙漠中文wiki站搭建(1)

    游戏网站搭建实例:黑色沙漠中文wiki站搭建 下面以黑色沙漠这个游戏做实例解答一个游戏网站从无到有! 仅仅是拿黑色沙漠来练手,如果真的考虑自己做一个游戏网站来说黑沙是不靠谱的 ·游戏太大,要做的资料就 ...

  2. Django框架学习——1—(虚拟环境搭建、MVC思想与Django的MVT区别、Django项目的创建、运行Django项目、项目结构介绍)

    1.虚拟环境搭建 创建新的Django框架的虚拟环境: 注意:如果没有pipenv指令,需要安装这个支持库,同时需要记住配置它的环境变量,否则虚拟环境会安装在默认文件夹下(一般是C:\Users\Ad ...

  3. 游戏网站搭建,不止是一个网站那么简单

    现在游戏市场的火爆带来了很多新商机,游戏代理也变成了炙手可热的创业项目.尤其对于年轻人来说,本身就玩游戏,又对游戏和网络有所了解,游戏代理听上去是个不错的创业选择. 说到做游戏代理,很多人第一反应是: ...

  4. 基于python下django框架 实现校园网站系统详细设计

    前言介绍(开发目的和意义) 校园网站是当前信息化的表现.在没有电脑和互联网的时代.要想了解校园信息.专业分院信息.老师信息等只能通过纸质的报纸或者杂志.在PC电脑和互联网的发展下,现在只有在有网络的地 ...

  5. python中型项目---Django框架---图书管理网站的制作-01

    图书管理网站的制作详解(个人学习django框架的笔记) 第01号笔记最终成果图: 当前笔记所完成的网站的功能简介: 1 网页从数据库获得图书名称 2 点击新增按钮后增加一本书,当前名为"流 ...

  6. 基于Django框架的sysinfo项目搭建---系统信息监控(主机名,内核版本等)

    目录 主机信息监控 项目搭建 基础框架构建 首页系统信息展示完善 主机信息监控 项目搭建 详情见前篇博客 创建子应用host并且设置本地化 数据库表的创建和超级用户的创建 git管理项目(requir ...

  7. Django框架学习(1) —— 环境搭建

    最近也开始学习Django,哔哩哔哩视频地址:https://www.bilibili.com/video/BV1CJ411G79F?p=119 菜鸟教程上有Django的介绍这里不多说. 开发环境 ...

  8. python毕业设计作品基于django框架企业公司网站毕设成品(6)开题答辩PPT

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

  9. python毕业设计 基于django框架企业公司网站系统毕业设计设计与实现

    开发环境 开发语言:python:Python版本:3.8.7 开发框架:Django:Django版本:4.x 数据库:mysql:数据库版本:mysql8 数据库管理工具:navicat10+ 开 ...

最新文章

  1. Jupyter Notebook 中查看当前 运行哪个python
  2. itext转html为pdf 锚点,ITEXT输出pdf..docx
  3. Linux中如何将文件dump成16进制值
  4. orcale存储过程学习之路(一)
  5. LVS NAT/DR
  6. Lync Server 2013:边缘服务器 -- Set CA Error
  7. 深度学习之 DCN(Deformable Convolution)-可变形卷积
  8. 人生没有后悔药,云主机可以有“时光机”
  9. linux用户管理和群界面怎么打开,Linux命令行界面下的用户和组的管理
  10. easydarwin 安装_centos服务器安装部署搭建 EasyDarwin【步骤详解】
  11. 倒立摆状态反馈控制——分析、建模与仿真(matlab)
  12. 手机射频电路全面解析
  13. 第16周收录103起融资,芯片创企为热点丨潜在周波啊
  14. PCB Layout初学者必会知识总结(转)
  15. moment.js时间操作
  16. 数据库原理及应用-李唯唯主编-实验3-4
  17. leecode--链表对折
  18. 安卓的平板电脑,请问有没有类似Ghost的备份还原软件?(for 安卓)
  19. 我被Algo套死了......
  20. uboot中ftd命令

热门文章

  1. 软件设计师-12.软件系统分析与设计
  2. 重置表单元素file的方法(兼容ie8)
  3. 修改 TeamViewer ID 的方法:
  4. VS导入数据到数据库
  5. 【Python学习】买苹果简单案例
  6. 山东大学计算机科学与技术学院程序设计思维与实践作业 week5-数学基础与线性结构
  7. 第十一届泰迪杯数据挖掘挑战赛-产品订单数据分析B题(完整代码)--数据分析--第三部分
  8. LT2611UX-LVDS转HDMI2.0转换器,支持高达6Gbps的数据速率
  9. 关键词布局对网站优化的影响非同寻常!
  10. 基于JavaWeb实现身份证文字提取(百度接口)