使用Django框架实现游戏网站搭建

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

上一篇中我们使用了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:
        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 服务器的搭建

本网站选择使用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 FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from allow此处为设置对/根目录的访问权限
</Directory>

<Directory "F:/danjo/game">  //该目录为django工程所在目录
        Order deny,allow
        allow 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框架。

时间: 2024-10-13 10:34:14

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

Django 框架下的Blog 搭建 ---第一篇笔记

1.安装python 2.x 版本并加入环境变量 2.安装 virtualevn 工具将系统隔离成一个个虚拟docker 参考:https://pypi.python.org/pypi/virtualenv 2.1 mkdir 一个文件夹,并用 virtualenv  文件夹名, 虚拟一个带 setuptools 等工具的 python 环境 2.2 用 bin 目录下的工具 pip 进行安装Django    ./pip install Django==1.9.6  参考:https://do

django从0到1搭建网站

曾经有人说我前端很水,那么在这一系列文章中我打算把前后端融合在一起来做一次网站的全面重构,希望可以把刚刚入行的同学带上正途 请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址 聊聊工程 如今,数据科学家已经逐渐取代现在的“软件工程师”成为IT行业的主流职业,和“全民都在聊人工智能”一样,可能全部IT工作者都要天天研究算法.琢磨模型.跑数据.调参数.跑数据.调参数,那些被淘汰的“软件工程师”会真的成为民工一样的行业,但是我觉得任何算法都离不开工程实现,再好的模型没有

《用Python写网络爬虫》示例网站搭建(框架+本书pdf+章节代码)

所用到的代码及工具 示例网站源码+框架+本书pdf+章节代码 链接: https://pan.baidu.com/s/1miHjIYk 密码: af35 环境 python2.7 win7x64 示例网站搭建 wswp-places.zip 书中站点源码web2py_src.zip 站点所使用的框架 1 解压web2py_src.zip2 然后到web2py/applications目录下 3 将wswp-places.zip解压到applications目录下 4 返回上一层目录,到web2p

Wordpress搭建社交型小游戏网站10大步骤

http://www.aliyun.com/zixun/content/2_8_196141.html —————————————————————————————————————————————————————————————————— 1:购买虚拟主机 你需要购买一个虚拟主机空间,买之前强烈建议你有一张信用卡和paypal帐号. 我购买的是ixwebhosting的虚拟主机,比较稳定,并且速度也可以,我在国内ping值为200ms左右, 国外其他国家访问更快,最重要的是他们提供独立IP地址,这

Python3.x:Django框架搭建(web应用框架)

Python3.x:Django框架搭建(web应用框架) 一,安装 cmd安装命令: pip3 install django 二,环境变量配置 django-admin.exe文件路径:D:\Python36\Scripts 在环境变量的path后面加入: ;D:\Python36\Scripts\django-admin.exe 测试是否配置成功,cmd输入: django-admin help 出现如下内容,即表示成功: 三,创建django项目 原文地址:https://www.cnbl

Django框架实战:搭建一个小型的服务器运维网站(一)

本文会遇到很多的代码,如果想要源代码的小伙伴,我已经分享到下方了,想要的可以自己研究一下 本人从事Python开发多年,很多小伙伴说想学一下web中的Django框架,我就用Django框架做一系列的实战项目,欢迎大家订阅.欢迎大家订阅微信公众号:Python从程序猿到程序员,或者加4913.08659,编码:柯西,编码:柯西.有不懂的可以在里面问,同时也是一个学习直播资料的平台 前言 ??不管是运维还是开发抑或是测试,工作中不免会和Linux服务器打交道,常见的操作譬如:查看CPU或内存状态.

Python学习(三) Django框架简单搭建

为了快速学习Python进行Web的开发,所以我不准备从Python的基础学起,直接从Django框架入手,边学框架边学Python的基础知识. 下面就开始Django的快速开发之旅吧. 关于Django框架1.8的英文文档在其官网上都有,地址 https://docs.djangoproject.com/en/1.8/intro/ Python的开发手册地址:https://pythonspot.com/getting-started/ https://docs.djangoproject.c

Django框架的简介

Django框架的背景 Django是一款基于Python开发的全栈式一体化Web 应用框架.2003 年问世之初,它只是 美国一家报社的内部工具,2005 年 7 月使用 BSD 许可证完成了开源.其目的是削减代码量,简 单且迅速地搭建以数据库为主体的复杂Web 站点.它是全栈式框架,因此安装起来很简单,而 且使用者众多.这使得 Django除具有完备的官方文档之外,还有大量的关联文档.丰富的第三 方库可供使用.与其他框架相比,Django 用起来要轻松得多. Django框架的特点 1.完整

Django框架介绍 python三大主流web框架之一

一.学习准备 1.下载安装Django(建议安装1.x版本) 方法:终端cmd输入命令:pip install django==1.11.11  然后回车即可 校验是否安装成功:django-admin 二.纯手撸web框架 1.纯手撸web框架 软件开发架构 c/s架构 b/s架构 本质bs也是cs web后端 需求: 1.根据用户输入不同的后缀返回不同的内容 从符合http协议格式的数据中获取用户输入的后缀 不足之处: 1.socket代码是我们自己写的 2.http数据也是我们自己处理的