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


Posted in Python onFebruary 12, 2020

 引言

最近学习了虫师的发布会签到系统demo,结合自己所学django知识,对demo重新塑造了一下。也是为了练练手,巩固知识。现在就分享一下成果~

Django工作流

学习django web开发,先来简单了解一下django的工作机制,请看下图:

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

简单说明:

用户通过浏览器访问:http://127.0.0.1:8000/index,首先运行的是urlpatterns程序,通过url路由找到对应的视图函数views.py,视图函数处理所有逻辑和数据,并且将用户要的数据经过函数处理后通过index.html返回给浏览器前的用户看。

详情流程

从用户通过浏览器访问→函数处理→数据展示,整个形成一个闭关。

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

MVC是众所周知的模式,即:将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制 器)。其中:

M——管理应用程序的状态(通常存储到数据库中),并约束改变状态的行为(或者叫做“业务规则”)。
 
C——接受外部用户的操作,根据操作访问模型获取数据,并调用“视图”显示这些数据。控制器是将“模型”和“视图”隔离,并成为二者之间的联系纽带。
 
V——负责把数据格式化后呈现给用户。

Django也是一个MVC框架。但是在Django中,控制器接受用户输入的部分由框架自行处理(C交给用户),所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式:

M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。

登录

后端代码:

 

#登录逻辑处理函数
def login_action(request):
 if request.method == "POST":
  username = request.POST.get('username','')
  password = request.POST.get('password','')
  remember = request.POST.get('remember','')
  print(remember,111)
  #if username == 'admin' and password == '123456':
  #django认证登录
  user = auth.authenticate(username=username,password=password)
  # print("user:%s"%user)
  if user is not None:
   auth.login(request,user) #登陆
   #response.set_cookie('user',username,3600) #添加浏览器cookie
   request.session['user'] = username #写入session 写入浏览器,存入服务器。
   response = HttpResponseRedirect('/home/')
   """
   重定向,先post→get通过路由urls,找到event_manager函数,跳转到找到event_manager.html页面。
   """
   # 判断是否记住用户名
   if remember == "on":
    # 设置cookie username *过期时间为1周,按秒计算
    response.set_cookie('username', username, max_age=7 * 24 * 3600)
   return response
  else:
   # return render(request,'index.html',{'error':'username or password error!'})
   return redirect('/login/')
#登录显示页面
def login(request):
 '''显示登陆页面'''
 # 获取cookie username
 if 'username' in request.COOKIES:
  username = request.COOKIES['username']
 else:
  username = ''
 return render(request,'index.html',{'username': username})

前端代码

#首页
<html>
<head>
 {% load bootstrap3 %}
 {% bootstrap_css %}
 <link rel="stylesheet" href="/static/css/style.css">
</head>
<body style="margin: 5%;">
<div class="container">
 <div class="form row">
  <div class="form-horizontal col-md-offset-3" id="login_form">
   <h3 class="form-title" style="padding-left: 20%"><font color="#fffaf0">欢迎登录</font></h3>
   <div class="col-md-9">
    <form action="/login_action/" method="post">
     <div class="form-group">
      <i class="fa fa-user fa-lg"></i>
      <input class="form-control required" type="text" value="{{ username }}" placeholder="Username"
        id="username" name="username" autofocus="autofocus" maxlength="20"/>
     </div>
     <div class="form-group">
      <i class="fa fa-lock fa-lg"></i>
      <input class="form-control required" type="password" placeholder="Password" id="password"
        name="password" maxlength="8"/>
     </div>
     <div class="form-group">
      <label class="checkbox">
       {#       <input type="checkbox" name="remember" value="1"/>记住我#}
       <input type="checkbox" name="remember"/>记住我
      </label>
      <p>{{ back_dict }}</p>
     </div>
     <div class="form-group col-md-offset-9">
      <button type="submit" class="btn btn-success pull-right" name="submit">登录</button>
     </div>
    </form>
   </div>
  </div>
 </div>
</div>
</body>
</html>

效果如下

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

首页

后端代码

#主页
def home(request):
 return render(request,'home.html')

效果如下

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

发布会页面

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

嘉宾页面

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

总结

以上所述是小编给大家介绍的Python django框架开发发布会签到系统(web开发),希望迪大家有所帮助!

Python 相关文章推荐
Python采集腾讯新闻实例
Jul 10 Python
Python+django实现简单的文件上传
Aug 17 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
Pycharm学习教程(1) 定制外观
May 02 Python
Python 异常处理的实例详解
Sep 11 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 Python
Python 切分数组实例解析
Nov 07 Python
Python实现仿射密码的思路详解
Apr 23 Python
Python pip install之SSL异常处理操作
Sep 03 Python
解决Pyinstaller打包软件失败的一个坑
Mar 04 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 Python
Python计算公交发车时间的完整代码
Feb 12 #Python
详解Django3中直接添加Websockets方式
Feb 12 #Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 #Python
TensorFlow:将ckpt文件固化成pb文件教程
Feb 11 #Python
TensorFlow获取加载模型中的全部张量名称代码
Feb 11 #Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 #Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
Feb 11 #Python
You might like
我的论坛源代码(一)
2006/10/09 PHP
php 无限极分类
2008/03/27 PHP
php5 pdo新改动加载注意事项
2008/09/11 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
2020/04/06 PHP
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
基于jQuery试卷自动排版系统
2010/07/18 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
python mysqldb连接数据库
2009/03/16 Python
python实现socket端口重定向示例
2014/02/10 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
python tornado使用流生成图片的例子
2019/11/18 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
Python类成员继承重写的实现
2020/09/16 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
中软国际Java程序员机试题
2012/08/19 面试题
结婚典礼证婚词
2014/01/08 职场文书
旷课检讨书
2015/01/26 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript
Java 在生活中的 10 大应用
2021/11/02 Java/Android