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语句

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

原文地址:https://www.cnblogs.com/zhen1996/p/9726819.html