Python django框架开发发布会签到系统(web开发)

Python Django框架开发发布会签到系统(web开发)

1. 签到系统介绍

随着技术的发展,签到系统变得愈发普及,不仅限于学校、公司等场合使用,现在各类线下活动也都需要使用签到系统,以便于管理人员快速获取参与者的基本信息。

Python Django框架的出现,使得web开发变得更加高效和简洁。在Python Django框架的基础上,可以轻松开发一个签到系统。下面将介绍如何使用Python Django框架开发签到系统。

2. 开发环境准备

在开始开发前,需要准备以下环境:

Python 2.x 或 3.x

Django 2.x 或以上版本

MySQL 或 SQLite

3. 数据库设计

签到系统需要设计下列表:

用户表:用于记录用户的基本信息,例如姓名、工号等。

活动表:用于记录活动的基本信息,例如名称、时间等。

签到表:用于记录用户在活动中签到的时间。

在MySQL中创建表的代码如下:

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(255) NOT NULL,

`job_number` varchar(255) NOT NULL,

PRIMARY KEY (`id`)

);

CREATE TABLE `activity` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(255) NOT NULL,

`time` datetime NOT NULL,

PRIMARY KEY (`id`)

);

CREATE TABLE `attendance` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`user_id` int(11) NOT NULL,

`activity_id` int(11) NOT NULL,

`time` datetime NOT NULL,

PRIMARY KEY (`id`),

KEY `user_id` (`user_id`),

KEY `activity_id` (`activity_id`),

CONSTRAINT `attendance_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT `attendance_ibfk_2` FOREIGN KEY (`activity_id`) REFERENCES `activity` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

);

4. Django项目结构

创建Django项目的命令如下:

django-admin startproject sign_in

创建完成后,项目的目录结构如下:

sign_in/

manage.py

sign_in/

__init__.py

settings.py

urls.py

wsgi.py

4.1 创建应用

为项目创建应用并命名为“attendance”,命令如下:

cd sign_in

python manage.py startapp attendance

命令执行后,将在项目的根目录下创建attendance目录,应用的目录结构如下:

attendance/

__init__.py

admin.py

apps.py

models.py

tests.py

views.py

migrations/

__init__.py

5. 编写模型

5.1 模型的定义

在attendance/models.py中添加如下代码,定义用户、活动和签到三张表的关系:

from django.db import models

class User(models.Model):

name = models.CharField(max_length=255)

job_number = models.CharField(max_length=255)

def __str__(self):

return self.name

class Activity(models.Model):

name = models.CharField(max_length=255)

time = models.DateTimeField()

def __str__(self):

return self.name

class Attendance(models.Model):

user = models.ForeignKey(User, on_delete=models.CASCADE)

activity = models.ForeignKey(Activity, on_delete=models.CASCADE)

time = models.DateTimeField(auto_now_add=True)

def __str__(self):

return '{} attended {}'.format(self.user.name, self.activity.name)

5.2 数据库迁移

编写模型后,需要更新数据库,命令如下:

python manage.py makemigrations attendance

python manage.py migrate

6. 编写视图和模板

签到系统的主要功能是实现用户签到,因此需要编写签到页面和签到成功页面。视图函数的功能是渲染模板,将模板中的动态数据与静态数据结合起来展示给用户。

6.1 签到页面

在attendance/views.py中添加如下代码:

from django.shortcuts import render

from django.http import HttpResponse

from .models import User, Activity, Attendance

def sign_in(request):

if request.method == 'POST':

user_id = request.POST['user_id']

activity_id = request.POST['activity_id']

user = User.objects.get(id=user_id)

activity = Activity.objects.get(id=activity_id)

Attendance.objects.create(user=user, activity=activity)

return HttpResponse('Signed in successfully!')

else:

users = User.objects.all()

activities = Activity.objects.all()

return render(request, 'attendance/sign_in.html', {'users': users, 'activities': activities})

在attendance/templates/attendance目录下新建sign_in.html模板,并编写如下代码:

<!DOCTYPE html>

<html>

<head>

<title>Sign In</title>

</head>

<body>

<form method="post">

{% csrf_token %}

<label>Select your name:</label>

<select name="user_id">

{% for user in users %}

<option value="{{ user.id }}">{{ user.name }}</option>

{% endfor %}

</select><br>

<label>Select activity:</label>

<select name="activity_id">

{% for activity in activities %}

<option value="{{ activity.id }}">{{ activity.name }} - {{ activity.time }}</option>

{% endfor %}

</select><br>

<input type="submit" value="Sign in">

</form>

</body>

</html>

6.2 签到成功页面

在attendance/views.py中添加如下代码:

def sign_result(request):

return render(request, 'attendance/sign_result.html')

在attendance/templates/attendance目录下新建sign_result.html模板,并编写如下代码:

<!DOCTYPE html>

<html>

<head>

<title>Sign In Result</title>

</head>

<body>

<h1>Sign in success!</h1>

<p><a href="{% url 'sign_in' %}">Continue</a></p>

</body>

</html>

7. 配置路由

在attendance/urls.py中添加如下代码:

from django.urls import path

from . import views

urlpatterns = [

path('', views.sign_in, name='sign_in'),

path('sign_result/', views.sign_result, name='sign_result'),

]

将attendance应用的路由配置添加到主路由中,在sign_in/urls.py中添加如下代码:

from django.urls import include, path

urlpatterns = [

path('attendance/', include('attendance.urls')),

]

8. 运行项目

在命令行中执行如下命令启动Django服务:

python manage.py runserver

打开浏览器,访问http://127.0.0.1:8000/attendance,即可看到签到页面,选择用户名和活动后,点击“Sign in”按钮,即可完成签到。

9. 总结

本文介绍了如何使用Python Django框架开发签到系统。在开发过程中,需要编写模型、视图、模板和路由等代码,同时需要对数据库进行操作。Python Django框架的出现,使得web开发变得更加高效和简洁,为开发者带来了极大的便利。

后端开发标签