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)
    #文章id
    article=models.ForeignKey(to='Article',to_field='nid',null=True)
    #标签id
    tag=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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值