zoukankan      html  css  js  c++  java
  • BBS登入和数据库迁移部分

    setting中的设置

    auth组件用的user表不再是原来的user表了,应该是现在指定的表(以后没有auth_user表了) AUTH_USER_MODEL
    = 'blog.UserInfo' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'zhou1', 'USER': 'root', 'PASSWORD': 'admin', 'PORT': 3306, 'HOST': '127.0.0.1', } }

    数据库迁移部分

    from django.db import models
    from django.contrib.auth.models import AbstractUser
    
    
    # Create your models here.
    # UserInfo这个表,继承AbstractUser,因为要用auth组件
    
    class UserInfo(AbstractUser):
        nid = models.AutoField(primary_key=True)
    
        # username=models.CharField(max_length=32,unique=True)
        # 该字段可以为空,为该字段设置默认值,default='123455666'
        phone = models.CharField(max_length=32,null=True)
        # upload_to需要传一个路径
        avatar = models.FileField(upload_to='avatar/', default='/static/img/default.png')
        #  一对一关联blog表,to_field如果不写,默认主键
        # blog_id字段存的数据是什么?blog表的---nid这个字段
        blog = models.OneToOneField(to='Blog', to_field='nid')
    
        # user表
        #     id name  blog_id
        #     1  111    1
        #     2  111    1
    class Blog(models.Model):
        nid = models.AutoField(primary_key=True)
        title = models.CharField(max_length=64)
        site_name = models.CharField(max_length=32)
        theme = models.CharField(max_length=64)
    
    
    class Category(models.Model):
        nid = models.AutoField(primary_key=True)
        title = models.CharField(max_length=64)
        # ForeignKey跟OneToOneField的区别?
        #OneToOneField unique=True
        blog = models.ForeignKey(to='Blog', to_field='nid', null=True)
    
    
    class Tag(models.Model):
        nid = models.AutoField(primary_key=True)
        title = models.CharField(max_length=64)
        blog = models.ForeignKey(to='Blog', to_field='nid', null=True)
    
    
    class Article(models.Model):
        nid = models.AutoField(primary_key=True)
        title = models.CharField(max_length=64)
        # 摘要,简单描述
        desc = models.CharField(max_length=255)
        # 大文本TextField()
        content = models.TextField()
        # 存时间类型,auto_now_add每插入一条数据,时间自动写入当前时间,
        # auto_now,这条数据修改的时候,会更新成当前时间
        create_time = models.DateTimeField(auto_now_add=True)
    
        blog = models.ForeignKey(to='Blog', to_field='nid', null=True)
    
        category = models.ForeignKey(to='Category', to_field='nid', null=True)
        # through_fields应该怎么写?
        # 中介模型,手动创建第三张表
        tag = models.ManyToManyField(to='Tag', through='ArticleTOTag', through_fields=('article', 'tag'))
        # 这样写,会自动创建第三张表
        # tag = models.ManyToManyField(to='Tag')
    
    
    # 手动创建第三张表
    class ArticleTOTag(models.Model):
        nid = models.AutoField(primary_key=True)
        article = models.ForeignKey(to='Article', to_field='nid')
        tag = models.ForeignKey(to='Tag', to_field='nid')
        # article和tag应不应该联合唯一?
    
        # article_id  1
        # tag_id     1
    
    
    class Commit(models.Model):
        nid = models.AutoField(primary_key=True)
        user = models.ForeignKey(to='UserInfo', to_field='nid')
        article = models.ForeignKey(to='Article', to_field='nid')
        content = models.CharField(max_length=255)
        create_time = models.DateTimeField(auto_now_add=True)
        # 这样写是可以的
        # parent_id=models.IntegerField()
        # 自关联
        # parent_id=models.ForeignKey(to='Commit',to_field='nid')
        parent = models.ForeignKey(to='self', to_field='nid',null=True)
    
    
    class UpAndDown(models.Model):
        nid = models.AutoField(primary_key=True)
        user = models.ForeignKey(to='UserInfo', to_field='nid')
        article = models.ForeignKey(to='Article', to_field='nid')
        is_up = models.BooleanField()
    
        class Meta:
            # 写这些,只是为了不写脏数据,联合唯一
            unique_together = (('user', 'article'),)

    登入的四种方式

    from django.db import models
    from django.contrib.auth.models import AbstractUser
    
    
    # Create your models here.
    # UserInfo这个表,继承AbstractUser,因为要用auth组件
    
    class UserInfo(AbstractUser):
        nid = models.AutoField(primary_key=True)
    
        # username=models.CharField(max_length=32,unique=True)
        # 该字段可以为空,为该字段设置默认值,default='123455666'
        phone = models.CharField(max_length=32,null=True)
        # upload_to需要传一个路径
        avatar = models.FileField(upload_to='avatar/', default='/static/img/default.png')
        #  一对一关联blog表,to_field如果不写,默认主键
        # blog_id字段存的数据是什么?blog表的---nid这个字段
        blog = models.OneToOneField(to='Blog', to_field='nid')
    
        # user表
        #     id name  blog_id
        #     1  111    1
        #     2  111    1
    class Blog(models.Model):
        nid = models.AutoField(primary_key=True)
        title = models.CharField(max_length=64)
        site_name = models.CharField(max_length=32)
        theme = models.CharField(max_length=64)
    
    
    class Category(models.Model):
        nid = models.AutoField(primary_key=True)
        title = models.CharField(max_length=64)
        # ForeignKey跟OneToOneField的区别?
        #OneToOneField unique=True
        blog = models.ForeignKey(to='Blog', to_field='nid', null=True)
    
    
    class Tag(models.Model):
        nid = models.AutoField(primary_key=True)
        title = models.CharField(max_length=64)
        blog = models.ForeignKey(to='Blog', to_field='nid', null=True)
    
    
    class Article(models.Model):
        nid = models.AutoField(primary_key=True)
        title = models.CharField(max_length=64)
        # 摘要,简单描述
        desc = models.CharField(max_length=255)
        # 大文本TextField()
        content = models.TextField()
        # 存时间类型,auto_now_add每插入一条数据,时间自动写入当前时间,
        # auto_now,这条数据修改的时候,会更新成当前时间
        create_time = models.DateTimeField(auto_now_add=True)
    
        blog = models.ForeignKey(to='Blog', to_field='nid', null=True)
    
        category = models.ForeignKey(to='Category', to_field='nid', null=True)
        # through_fields应该怎么写?
        # 中介模型,手动创建第三张表
        tag = models.ManyToManyField(to='Tag', through='ArticleTOTag', through_fields=('article', 'tag'))
        # 这样写,会自动创建第三张表
        # tag = models.ManyToManyField(to='Tag')
    
    
    # 手动创建第三张表
    class ArticleTOTag(models.Model):
        nid = models.AutoField(primary_key=True)
        article = models.ForeignKey(to='Article', to_field='nid')
        tag = models.ForeignKey(to='Tag', to_field='nid')
        # article和tag应不应该联合唯一?
    
        # article_id  1
        # tag_id     1
    
    
    class Commit(models.Model):
        nid = models.AutoField(primary_key=True)
        user = models.ForeignKey(to='UserInfo', to_field='nid')
        article = models.ForeignKey(to='Article', to_field='nid')
        content = models.CharField(max_length=255)
        create_time = models.DateTimeField(auto_now_add=True)
        # 这样写是可以的
        # parent_id=models.IntegerField()
        # 自关联
        # parent_id=models.ForeignKey(to='Commit',to_field='nid')
        parent = models.ForeignKey(to='self', to_field='nid',null=True)
    
    
    class UpAndDown(models.Model):
        nid = models.AutoField(primary_key=True)
        user = models.ForeignKey(to='UserInfo', to_field='nid')
        article = models.ForeignKey(to='Article', to_field='nid')
        is_up = models.BooleanField()
    
        class Meta:
            # 写这些,只是为了不写脏数据,联合唯一
            unique_together = (('user', 'article'),)
  • 相关阅读:
    DDD CQRS架构和传统架构的优缺点比较
    ENode框架单台机器在处理Command时的设计思路
    C#分布式消息队列 EQueue 2.0 发布啦
    EQueue 2.0 性能测试报告
    EQueue文件持久化消息关键点设计思路
    EQueue性能测试计划
    ENode简介与各种教学视频资源汇总(要进群这篇文章必看)
    ENode框架Conference案例分析系列之
    ENode框架Conference案例分析系列之
    ENode框架Conference案例分析系列之
  • 原文地址:https://www.cnblogs.com/zhouhao123/p/10028234.html
Copyright © 2011-2022 走看看