BBS-登录

 

 

 

from django.db import models# Create your models here.
from django.contrib.auth.models import AbstractUser#用户
class UserInfo(AbstractUser):nid=models.AutoField(primary_key=True)telephone=models.CharField(max_length=32)avatar=models.FileField(upload_to='avatar/',default='avatar/default.png')create_data=models.DateTimeField(auto_now_add=True)blog=models.OneToOneField(to='Blog',to_field='nid',on_delete=models.CASCADE,null=True)#站点(与用户一对一关系,不同用户所属的个人网站)
class Blog(models.Model):nid=models.AutoField(primary_key=True)#博客名称title=models.CharField(max_length=32)#站点的名称site_name=models.CharField(max_length=32)#博客主题样式theme=models.CharField(max_length=32)#分类:自己创建的分类
class Category(models.Model):nid=models.AutoField(primary_key=True)#分类名称title=models.CharField(max_length=32)#所属博客: 这个分类属于哪个站点blog=models.ForeignKey(to='Blog',to_field='nid',on_delete=models.CASCADE,null=True)#标签
class Tag(models.Model):nid=models.AutoField(primary_key=True)# 标签名称title=models.CharField(max_length=32)# 所属博客,跟Blog一对多 这个标签属于哪个站点blog=models.ForeignKey(to='Blog',to_field='nid',on_delete=models.CASCADE,null=True)#文章
class Article(models.Model):nid=models.AutoField(primary_key=True)# 文章标题title=models.CharField(max_length=32)# 文章摘要desc=models.CharField(max_length=255)# 文章内容,存大文本content=models.TextField()#创建时间create_date=models.DateTimeField(auto_now_add=True)#跟user一对多,一个用户可以创建多篇文章user=models.ForeignKey(to='UserInfo',to_field='nid',null=True)#跟Category分类表一对多:一个分类对应多篇文章category=models.ForeignKey(to='Category',to_field='nid',null=True)#文章标题:与标签多对多关系,通过through指定自己写的中间表#手动创建第三张表tag=models.ManyToManyField(to='Tag',through='Article2Tag',through_fields=('article','tag'))#文章与标签多对多关系表
class Article2Tag(models.Model):nid=models.AutoField(primary_key=True)#文章idarticle=models.ForeignKey(to='Article',to_field='nid',null=True)#标签idtag=models.ForeignKey(to='Tag',to_field='nid',null=True)class ArticleUpDown(models.Model):nid=models.AutoField(primary_key=True)# 点赞/点踩 的用户user=models.ForeignKey(to='UserInfo',to_field='nid',null=True)# 点赞/点踩 的文章article=models.ForeignKey(to='Article',to_field='nid',null=True)# 赞还是踩is_up=models.BooleanField(default=True)#评论
class Comment(models.Model):nid=models.AutoField(primary_key=True)# 评论的用户:一个用户可以有多条评论user = models.ForeignKey(to='UserInfo', to_field='nid')#评论的文章:一个文章可以对应多条评论article=models.ForeignKey(to='Article',to_field='nid')# 评论的内容comm = models.CharField(max_length=255)# 评论的时间create_date = models.DateTimeField(auto_now_add=True)#因为可能会有自评论的情况:例如回复,所有要在评论表本身建立自关联# parent_comment=models.ForeignKey(to='Comment',to_field='nid') #2种写法,例如comment# 父评论的id,自关联,防止写脏数据parent_comment = models.ForeignKey(to='self', to_field='nid', null=True)
models.py

 

 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/bootstrap-3.3.7-dist/css/bootstrap.min.css"><script src="/static/jquery-3.3.1.js"></script><title>博客园登录</title>
</head>
<body><div class="container-fluid"><div class="row"><div class="col-md-6 col-md-offset-3">{% csrf_token %}<div class="form-group"><label for="id_name">用户名</label><input type="text" id="id_name" class="form-control"></div><div class="form-group"><label for="id_pwd">密码</label><input type="password" id="id_pwd" class="form-control"></div><div class="form-group"><label for="valid_code">验证码</label><div class="row"><div class="col-md-6"><input type="text" id="valid_code" class="form-control"></div><div class="col-md-6"><!--img标签里面可以,写一个图片地址,也可以写二进制--><img src="/get_code/" alt="" id="cod_img"></div></div></div><div><button class="btn btn-danger " id="submit_btn">提交</button><span class="error"></span></div></div></div></div>
<script><!--给验证码图片绑定点击事件,实现点击验证码能够获取新的验证码-->$('#cod_img').click(function () {$('#cod_img')[0].src=$('#cod_img')[0].src+'?'})$('#submit_btn').click(function () {$.ajax({url:'',type:'post',data:{'name':$('#id_name').val(),'pwd':$('#id_pwd').val(),'valid_code':$('#valid_code').val(),'csrfmiddlewaretoken':"{{ csrf_token }}",},success:function(data){<!--如果成功打印返回的back_msg={'user':None,'msg':None}字典类型-->if (data.user){//data是个object对象
                    alert(data.msg) //登录成功
                }else {$('.error').text(data.msg)setTimeout(function () {$('.error').text('')},1000)}}})})</script></body>
</html>
login.html

 

csrf攻击: 

 

session:不用的浏览器在数据库里对应一条session

 

 

form表单渲染:

 

转载于:https://www.cnblogs.com/yangzhizong/p/9672500.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Mockito和BeanPostProcessors在Spring注入测试双打

我非常确定&#xff0c;如果您曾经使用过Spring并且熟悉单元测试&#xff0c;那么您会遇到与您不想修改的Spring应用程序上下文中注入模拟/间谍&#xff08;测试双打&#xff09;有关的问题。 本文介绍了一种使用Spring组件解决此问题的方法。 项目结构 让我们从项目结构开始&…

二叉搜索时与双向链表python_JZ26-二叉搜索树与双向链表

1、中序遍历&#xff0c;当前结点&#xff0c;以及左侧排好序的双向链表&#xff0c;再调整当前结点的指针指向最前结点/* struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {} };*/ class Solution …

html右缩进怎么设置,WPS中怎么设置右缩进两个字符?

回答&#xff1a;打开我们的Word文档&#xff0c;调整好我们的文字内容&#xff0c;然后全选我们的文字内容&#xff0c;注意要分段时按下键盘上的回车键另起一行。请点击输入图片描述接着&#xff0c;我们点击顶部菜单栏的“开始”菜单&#xff0c;在开始菜单下面的子菜单中找…

VS2013专业版+QT5.6.3+qt-vs-addin-1.2.5环境搭建

一、工具资料&#xff1a; 1.vs2013专业版地址&#xff1a;http://download.csdn.net/download/u010368556/10238145 2.qt各版本地址&#xff1a;http://download.qt.io/archive/qt/ 3.qt-vs插件地址&#xff1a;http://download.qt.io/archive/vsaddin/ 二、环境搭建过程&…

使用ActiveMQ和HornetQ通过WebSocket通过STOMP轻松进行消息传递

消息传递是用于构建不同级别的分布式软件系统的极其强大的工具。 通常&#xff0c;至少在Java生态系统中&#xff0c;客户端&#xff08;前端&#xff09;从不直接与消息代理&#xff08;或交换&#xff09;进行交互&#xff0c;而是通过调用服务器端&#xff08;后端&#xff…

【laravel】【转发】laravel 导入导出excel文档

1、简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel &#xff0c;从而方便我们以优雅的、富有表现力的代码实现Excel/CSV文件的导入和 导出 。 该项目的GitHub地址是&#xff1a; https://github.com/Maatwebsite/Laravel-Excel 。 本文我们将在Laravel中…

你真的了解css像素嘛?

在日常开发中&#xff0c;px一定是大家接触过最多的css单位&#xff0c;但是你真的了解px嘛&#xff1f;1px在屏幕中到底是多大呢&#xff1f;另外不知道大家有没有过下面这些疑惑: 为什么一个元素在pc上和移动端的物理尺寸不一样&#xff0c;但是两者的视觉效果上却差不多呢&…

mysql for mac中文_mysql for Mac 下创建数据表中文显示为?的解决方法

在我的绝版Mac mini下安装了mysql 5.7版本&#xff0c;实例中&#xff0c;在通过load data 导入数据时发现表中的中文显示为 &#xff1f;通过百度&#xff0c;发现多个版本的解决方法&#xff0c;将其中一个成功解决的方法贴上来&#xff1a;大多方法都是这样&#xff1a;需要…

计算机科学计算方面分为,计算机方面的专业分为哪些类?【资讯与计算科学】和【电脑科学与技术专业】有什么不同?...

计算机方面的专业分为哪些类&#xff1f;【资讯与计算科学】和【电脑科学与技术专业】有什么不同&#xff1f;以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;计算机方面的专业分为哪些类&am…

Java异常处理教程(包含示例和最佳实践)

异常是可能在程序执行期间发生的错误事件&#xff0c;它会破坏其正常流程。 Java提供了一种健壮且面向对象的方式来处理异常情况&#xff0c;称为Java异常处理 。 我们将在本教程中研究以下主题。 Java异常处理概述 异常处理关键字 异常层次 有用的异常方法 Java 7自动资源…

GMTC 大前端时代前端监控的最佳实践

本文来自阿里云前端监控团队&#xff0c;转载请注明出处本文为2018年6月21日&#xff0c;在北京举办的GMTC(全球大前端技术大会)&#xff0c;下午性能与监控专场&#xff0c;由阿里云前端监控团队前端技术专家彭伟春带来的演讲稿&#xff0c;现场反馈效果非常好&#xff0c;地上…

Alpha阶段敏捷冲刺②

1.提供当天站立式会议照片一张 每个人的工作 &#xff08;有work item 的ID&#xff09;&#xff0c;并将其记录在码云项目管理中&#xff1a; 昨天已完成的工作。 购买云服务器 注册账号 界面布局初步规划 今天计划完成的工作。 界面雏形设计 数据库初步设计 完成后端框架初步…

透明地持久保存并从数据库中检索加密的数据

自从我在这里发表上一个帖子以来已经有两个多月了&#xff0c;但是今年六月和七月非常忙碌而密集。 首先&#xff0c; Confitura的组织&#xff08;欧洲最大的Java开发人员免费会议&#xff09;参加了我所有的免费晚会&#xff0c;然后在相当紧张的住院期间&#xff0c;我们的第…

[译] 2017 年比较 Angular、React、Vue 三剑客

原文地址&#xff1a;Angular vs. React vs. Vue: A 2017 comparison原文作者&#xff1a;Jens Neuhaus译文出自&#xff1a;掘金翻译计划本文永久链接&#xff1a;https://github.com/xitu/gold-miner/blob/master/TODO/angular-vs-react-vs-vue-a-2017-comparison.md译者&…

centos 离线安装mysql_CentOS6离线安装mysql-5.7.25

1.mysql-5.7.25-1.el6.x86_64.rpm-bundle.tar下载百度云资源提取码&#xff1a;ej1y2.把下载的mysql安装包上传到Centos上解压mysql&#xff0c;我这是在Windows上解压的上传到Centos上&#xff0c;我在Centos上解压mysql不知道为什么少了rpm -ivh mysql-community-common-5.7.…

Linux自动化之Cobbler补鞋匠安装

cobbler介绍&#xff1a; 快速网络安装linux操作系统的服务&#xff0c;支持众多的Linux发行版&#xff1a;Red Hat、 Fedora、CentOS、Debian、Ubuntu和SuSE&#xff0c;也可以支持网络安装windows PXE的二次封装&#xff0c;将多种安装参数封装到一个菜单 Python编…

如何以10倍速加速Apache Xalan的XPath处理器

一段时间以来&#xff0c; Apache Xalan中存在一个令人尴尬的错误&#xff0c;该错误是XALANJ-2540 。 此错误的后果是Xalan每次XPath表达式求值将内部SPI配置文件加载数千次 &#xff0c;可以很容易地进行如下测量&#xff1a; 这个&#xff1a; Element e (Element)documen…

使用ant design Pro开发项目的小结

一、关于上手。 1. 关于ant design Pro的介绍&#xff0c;自己看官网&#xff0c;大致上可以理解为ant design&#xff08;组件库&#xff09; ant design Pro &#xff08;完整的项目&#xff09; dva&#xff08;路由 数据流管理&#xff09;的组合拳。总之这个Pro是一个已经…

Activiti中的高级脚本:自定义配置注入

脚本任务可能是Activiti代码库中“最古老的”类之一&#xff0c;但我认为它仍然未被许多人使用。 &#xff08;可以理解的&#xff1f;&#xff09;缺点当然是性能&#xff08;解释还是编译&#xff09;&#xff0c;并且从IDE角度来看支持较少。 但是&#xff0c;好处&#xf…

帆软决策报表嵌入html,在决策报表中使用网页框控件

假设决策报表里有一个网页框控件&#xff0c;控件名为rHIframe0&#xff1b;同时有三个按钮控件&#xff0c;分别给按钮控件添加下面的点击事件&#xff1a;3.1 setValue(String)设置并刷新网页框控件的地址(保留原参数)1)模板路径var Widget this.options.form.getWidgetByNa…