Django扫码抽奖平台的配置过程详解
作者:zz891422822 发布时间:2021-11-25 22:54:09
标签:Django,扫码,抽奖
安装源
pip install django2.2
pip install mysqlclient1.4.6
使用pyharm 创建django 项目
django基本配置
在settings.py中设置数据库链接
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'km',
'USER': 'root',
'PASSWORD': 'n4',
'HOST': 'na.cc',
'PORT': '3306'
}
}
在settings.py里面配置好端口:ALLOWED_HOSTS = ['*']
配置语言 LANGUAGE_CODE = ‘zh-hans'
配置时区TIME_ZONE = ‘Asia/Shanghai'
设置时间 USE_TZ = False
创建APP
startapp wuzhengteng
在apps中添加 ‘wuzhengteng',
在models.py中配置数据库
from django.db import models
# Create your models here.
class User(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=10)
tel = models.CharField(max_length=11)
def __str__(self):
return self.name
在manage.py中执行
# 收集数据不同
makemigrations
# 写入数据库
migrate
# 创建超级管理员
createsuperuser
将查询写入admin
from django.contrib import admin
from wuzhengteng.models import User
# Register your models here.
class UserAdmin(admin.ModelAdmin):
list_display = ['id', 'name', 'tel']
admin.site.register(User, UserAdmin)
检查数据库是否创建成功
http://127.0.0.1:8000/admin
登入后
配置前台的用户查看界面
url路径
from django.contrib import admin
from django.urls import path
from django.views.generic import TemplateView
from wuzhengteng import views #打开views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.user, name='home') # 添加指向到views
]
配置views
from django.shortcuts import render
from .models import User # 连接数据库
# Create your views here.
def user(request):
all_user = User.objects.all() # 查询全部
return render(request, 'index.html', {
'all_user': all_user, # 将来结果返回html页面
})
前端页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<table border="1">
<tr>
<td>用户</td>
<td>手机</td>
</tr>
{% for post in all_user %}
<tr>
<td>{{post.name}}</td>
<td>{{post.tel}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
测试访问127.0.0.1:8000
添加用户界面
配置路由 path(‘scan', views.scan, name=“scan”)
views中插入
web页面scan.htm
def scan(request):
result = ''
if request.method == 'POST':
name = request.POST.get('name')
tel = request.POST.get('tel')
print(tel)
db = User()
db.name = name
db.tel = tel
db.save()
result = 'success'
return render(request, 'scan.html', {'result': result})
else:
return render(request, 'scan.html')
web页面scan.html
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="UTF-8">
<title>扫码登入</title>
</head>
<body>
<div style="width: 210px;margin:0 auto">
<form method="post">
{% csrf_token %}
<label for="name">姓名:</label>
<input type="text" name="name" style="width: 150px"><br><br>
<label for="tel">电话:</label>
<input type="text" name="tel" style="width: 150px"><br><br>
<input type="reset"> <input type="submit">
</form>
{% if result %}
<p style="text-align: center">添加成功</p>
{% endif %}
</div>
</body>
前端抽奖界面
url中添加
path(‘luck', views.luck, name=“luck”)
views中添加
def luck(request):
all_user = User.objects.all()
return render(request, 'luck.html', {
'all_user': all_user,
})
setting里面设置静态路径
STATIC_URL = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR,"static"),
)
前端页面
<!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery随机抽奖 - 站长素材</title>
<head>
<script id="jquery_172" type="text/javascript" class="library" src="static/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
$(function(){
var alldata = new Array({% for post in all_user %}"{{post.name}}",{% endfor %});
var num = alldata.length - 1;
var show = $("#show");
var btn = $("#btn");
var open = false;
function change(){
var randomVal = Math.round(Math.random() * num);
var prizeName = alldata[randomVal];
show.text(prizeName);
}
function run(){
if(!open){
timer=setInterval(change,5);
btn.removeClass('start').addClass('stop').text('停止');
open = true;
}else{
clearInterval(timer);
btn.removeClass('stop').addClass('start').text('开始抽奖');
open = false;
}
}
btn.click(function(){run();})
})
</script>
<style>
body{ background:#fff;}
.wrap{ width:300px; margin:100px auto; font-family:"微软雅黑";}
.show{ width:300px; height:300px; background-color:#ff3300; line-height:300px; text-align:center; color:#fff; font-size:28px; -moz-border-radius:150px; -webkit-border-radius:150px; border-radius:150px; background-image: -webkit-gradient(linear,0% 0%, 0% 100%, from(#FF9600), to(#F84000), color-stop(0.5,#fb6c00)); -moz-box-shadow:2px 2px 10px #BBBBBB; -webkit-box-shadow:2px 2px 10px #BBBBBB; box-shadow:2px 2px 10px #BBBBBB;}
.btn a{ display:block; width:120px; height:50px; margin:30px auto; text-align:center; line-height:50px; text-decoration:none; color:#fff; -moz-border-radius:25px; -webkit-border-radius:25px; border-radius:25px;}
.btn a.start{ background:#80b600;}
.btn a.start:hover{ background:#75a700;}
.btn a.stop{ background:#00a2ff;}
.btn a.stop:hover{ background:#008bdb;}
</style>
</head>
<body>
<div class="wrap">
<div class="show" id="show">点击按钮开始抽奖</div>
<div class="btn">
<a href="javascript:void(0)" rel="external nofollow" class="start" id="btn">开始抽奖</a>
</div>
</div>
</body>
</html>
jq文件jquery-1.7.2.min.js
放在static 文件夹下
测试
来源:https://blog.csdn.net/zz891422822/article/details/112545278


猜你喜欢
- 目录前言1. v-show2. v-if 3. v-show和v-if的区别1. 在原理方面的区别2. 在使用应用场景方面的区别总
- 在知识库的建立的时候,用普通VARCHAR2存放文章是显然不够的,只有区区4000的字节,放不了多少字, 而CLOB数据类型,则能最多存放8
- 前言本人在学习go-micro中,用到Makefile,本人之前用过Makefile,但是不知道为什么这会就不能用了,我找了好多教程都没能解
- 命令行进入python打开cmd——>直接输入python即可,如下退出python方法一:先按Ctrl+z,再按Enter(回车键)
- 数字序号① ①② ②③ &
- PyCharm 应该是大多数 python 开发者的首选 IDE,每天我们都在上面敲着熟悉的代码,写出一个又一个奇妙的功能。它是帮助用户在使
- 看了oschina上的两个代码,受益匪浅。其中对join()方法不理解,看python官网文档的介绍:join([timeout]):等待直
- XPathXPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath使用方
- 参考廖雪峰的Python教程,实现Linux Python3获取雅虎天气#!/usr/bin/env python3# coding: ut
- Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select
- 本文实例讲述了Python中pandas模块DataFrame创建方法。分享给大家供大家参考,具体如下:DataFrame创建1. 通过列表
- 方法一: 1、在DOS窗口下输入net stop mysql5 或 net stop mysql 2、开一个DOS窗口,这个需要切换到mys
- XML是一个精简的SGML,它将SGML的丰富功能与HTML的易用性结合到Web的应用中。XML保留了SGML的可扩展功能,这使XML从根本
- 省市级联这东西基本是网注一份,而且基本是全是js写的,js写唯一坏处就是JS无效时不可用,我所说的js无效包括不支持js,js加载未完成或者
- 目录一、概念二、哪些函数支持三、占位符使用四、普通占位符1. %v、%+v、%#v2. %T3. %%五、布尔占位符六、整数占位符1. %b
- 递归和尾递归简单的说,递归就是函数自己调用自己,它做为一种算法在程序设计语言中广泛应用。其核心思想是把一个大型复杂的问题层层转化为一个与原问
- 如果只是因为浏览者改变了浏览器的设置,或者因为浏览器不兼容,使自己精心制作的网页变得“面目全非”,那多令人沮丧!下面我们以网页爱好者的常用工
- 本文实例讲述了python新式类和经典类的区别。分享给大家供大家参考,具体如下:新式类就是 class person(objec
- 学习编写简练、优化的CSS需要大量的实践和一种不自觉的强迫性清洁的渴望。然而让你的CSS保持整洁并不仅仅是你对清洁的疯狂的心理需求,尤其对于
- 一维插值插值不同于拟合。插值函数经过样本点,拟合函数一般基于最小二乘法尽量靠近所有样本点穿过。常见插值方法有拉格朗日插值法、分段插值法、样条