栖霞牌王是怎样炼成的——利用django实现网页版千秋戏(1)

千秋戏是单机游戏《古剑奇谭》中的一个小卡牌游戏。最近突然有兴趣把它实现成网页版,所以就想尝试着用python的web框架django实现出来。然而以前完全没接触过前后端的东西,所以开几篇博客记录一下过程中用到的知识,主要是给自己留档。这东西肯定存在着很多问题,还有赤果果的侵权啊什么的,所以网址和代码就不放出来了,我实现出来你们也玩不到,略略略。

django项目创建

首先安装django,ubuntu系统直接pip安装就能够成功,如果不成功可以参考菜鸟教程

sudo pip install Django

然后创建项目:

django-admin startproject Qianqiuxi

于是Qianqiuxi项目就构建了起来,撒花~
这个项目的目录树是这样的:

Qianqiuxi
	-Qianqiuxi
		- __init__.py
		- settings.py
		- urls.py
		- wsgi.py
	-db.sqlite3
	-manage.py

其中manage.py是一个实用的命令行工具,可让帮助你与 Django 项目进行交互;db.sqlite3是与数据库相关的文件;settings.py是项目的相关配置,urls.py是项目的URL声明;wsgi.py是一个WSGI兼容的Web服务器的入口。

项目运行

项目创建完成后的第一件事就是如何把它跑起来,还好django的基础教程都会将这一步:

python manage.py runserver 0.0.0.0:8000

这条命令是把项目在本地跑起来,后面的端口号可以自行指定。终端敲下这条命令后打开浏览器输入0.0.0.0:8000就能够看到一个类似helloWorld的界面了。

第一个页面

因为全都是自己摸索,所以从这一步开始这篇博客可能会错漏百出,仅供完全没有经验的人参考,大佬们如果看到什么辣眼睛的操作请务必评论区指出。
django是基于MVC思想的,我的理解就是说框架保证了前端表现形式和后端内容的分离,这一分离主要是通过模板实现的。
模板在我理解就是项目的前端(html)部分,我们在项目根目录下创建一个叫templates的文件夹,在里面创建一个hello.html,作为我们的第一个页面。

<html>
<head>准备好成为栖霞牌王了吗</head>
<body>
</body>
</html>

现在这个页面只有一个标题,写完跟原生html完全一样。
接下来一步就是修改 settings.py,在TEMPLATE的’DIRS’字段写入模板所在位置:

...
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR+"/templates",],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
...

页面写好后需要对其进行显示,在Qianqiuxi/Qianqiuxi下创建view.py,实现一个函数hello:

from django.shortcuts import render

def hello(request):
	return render(request, 'hello.html')

这一函数的作用是把数据填充进模板,然后把结果返回给浏览器,我们这个页面没有需要填充的数据,因此就直接把hello.html传给浏览器了。
到这一步距离真正呈现页面还有一个问题:如何把页面与url绑定起来。解决的方法就是在urls.py中添加url。

from django.conf.urls import url
from . import view

urlpatterns = [
		url('hello/', view.hello),
]

然后启动服务器,在浏览器网址输入0.0.0.0:8000/hello就能看到我们刚才写的页面:

这里的逻辑个人理解是:输入网址后,首先urls.py搜索当前url,然后定位到view.py中的hello函数,而hello函数负责把模板hello.html返回给浏览器。

页面跳转

第一个页面当然不只是用来欢迎用户的,而是要跳转到游戏页面的,页面跳转就用到了Django的另一个强大功能——表单。
表单负责与用户进行交互,把用户输入的信息传递给后端,然后后端进行处理。在这里我们在hello.html中加一个名为“发牌”的按钮,用户点击此按钮就跳转到游戏页面进行发牌。
发牌按钮并不是原生html中的button,而是用表单实现的:

...
<body>
	<form action="/game">
		<input type="submit" value="发牌">
	</form>
</body>
...

这一表单让我们能够自动跳转到/game下。
然后我们需要再写一个game.html,目前没有实现发牌功能,就先写一串字符好了:

<html>
<head></head>
<body>
	<h>准备发牌...</h>
</body>
</html>

然后在view.py下创建一个函数fapai,返回game.html,再在urls.py的url列表中添加/game,指向view.fapai,运行服务器:

点“发牌”按钮:

页面跳转完成,可以开始实现发牌了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值