• 9.29博客项目迭代1.2


    2018-9-29 21:41:02

    放上github网站  https://github.com/TrueNewBee/bbs_demo

    忙了一下午,不同的bug采坑 最后还是弄完了!

    贴上笔记 项目放在了github

    1. form组件梳理
        
        注册功能:
            1. 利用form组件生成HTML代码
            2. 使用AJAX提交数据,并且在页面显示错误信息
            3. 后端还是使用form做校验
    
        额外补充:
            滑动验证码
            前端预览头像
            
    
    2. 站点主页
        - Django admin简单使用
            1. 告诉admin 我有哪一些表
                1. 在app/admin.py文件中,把表注册一下
            2. 只有超级用户才能登陆admin管理后台
            
            3. blank=True 控制django admin 可以不填
                parent_comment = models.ForeignKey("self", null=True, blank=True)   # 在Django admin里面可以不填
    4. 对于局部钩子 一定要有返回值, 
            比如确认email ,就得return email
                # 重写email字段的局部钩子
        def clean_email(self):
            email = self.cleaned_data.get("email")
            is_exist = models.UserInfo.objects.filter(email=email)
            if is_exist:
                # 表示邮箱已注册
                self.add_error("email", ValidationError("邮箱已被注册"))
            else:
                return email

    auth模块再讲解
    详见今天auth_demo示例代码

    import os
    
    
    if __name__ == '__main__':
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bbs.settings")
    
        import django
        django.setup()
    
        from blog import models
    
        # 基于对象的查询 SQL: 子查询
        # a1 = models.Article.objects.first()
        # print(a1.user.avatar, type(a1.user))
        #
        # # 基于QuerySet查询, SQL: join连表查询
        # a2 = models.Article.objects.filter(pk=1)
        # print(a2.values("user__avatar"))
    
    
        # 查询a1对应的评论数
        ret = models.Article.objects.first().comment_set.all()
        print(ret)
            5. 把Django 的admin设置为中文
                # 更改admin的编码
                # LANGUAGE_CODE = 'en-us'
                LANGUAGE_CODE = 'zh-hans'
            
        - Bootstrap布局
            - 2 8 2布局
            
            - media的配置
                # Django用户上传的豆角media文件
                MEDIA_URL = "/media/"
                # media配置, 用户上传的文件都默认放在这个文件夹下
                MEDIA_ROOT = os.path.join(BASE_DIR, "media")
    
                # 需要在url中加上下面一段话
                # media相关的路由设置 
                url(r'^media/(?P<path>.*)$', serve, {"document_root": settings.MEDIA_ROOT}),
        
        - ORM查询操作
            - 基于对象的查询
            - 基于QuerySet的查询
            
            当查询比写入操作多的时候,我们尽量减少跨表查询,节省时
    
    间。
            文章表的评论数据和点赞踩灭数据 是通过额外字段写在文章
    
    表里的
        class Article(models.Model):
            # 评论数
        comment_count = models.IntegerField(verbose_name="评论数")
        # 点赞数
        up_count = models.IntegerField(verbose_name="点赞数", default=0)
        #
        down_count = models.IntegerField(verbose_name="", default=0)    
    
        # 不过需要手动更新 下次介绍
    
        3.在models里面 在各个class下设置 class Meta 可在Django admin页面显示中文
        class Article2Tag(models.Model):
        """
        文章和标签的多对多关系表
        """
        nid = models.AutoField(primary_key=True)
        article = models.ForeignKey(to="Article", to_field="nid")
        tag = models.ForeignKey(to="Tag", to_field="nid")
    
            class Meta:
                unique_together = (("article", "tag"),)
                verbose_name = "文章-表签"
                verbose_name_plural = verbose_name
    
    --------------------------------明天内容 ----------------------------    
    
    3. 个人主页
        - 分组、聚合
        - extra()  --> 执行SQL语句

    好了 明天继续迭代!!睡觉觉啦!忙了一下午!

  • 相关阅读:
    effective c++ 条款10 让operator= 返回*this的引用
    基于vs2008的opengl开发环境的配置
    effective c++ 条款13 以对象管理资源
    effective C++ 条款06如果你不想让编译器为你生成函数就应该明确拒绝
    effective c++条款07为多态基类声明为virtual析构函数
    effective c++条款08别让异常逃离析构函数
    effective c++条款11 在operator=中处理“自我赋值”
    ubuntu 下的截图工具
    effective c++ 条款12 赋值对象时勿忘其每一个成员
    [linux 安装]修改centos的yum源
  • 原文地址:https://www.cnblogs.com/zhen1996/p/9726819.html
Copyright © 2020-2023  润新知